2016-11-08 120 views
2

我有一個在Yocto的usr/lib(libbbexample.so)目錄中創建共享庫的圖層。該庫包含幾個功能。Yocto-gcc無法找到共享庫

,所以我必須創建在我寫這將使用來自libbbexample.so

helloworld.c

#incude<stdio.h> 
#include<bbexample.h> 

int main() 
{ 
    int data; 

    data = get_data(); // this function is present in libbbexample.so 

    printf("data is %d",data); 

    return 0; 
} 

所以我嘗試了bitbake的新層提供的功能的程序再新建一層,但我得到的錯誤"cannot find -libbbexample"

的新層的.bb文件的內容如下

do_compile() { 
     ${CC} helloworld.c -o helloworld -libbbexample ${LDFLAGS} 
} 

do_install() { 
     install -d ${D}${bindir} 
     install -m 0755 helloworld ${D}${bindir} 
} 

我已經設置了將創建共享庫的舊層的優先級設置爲6 以及將使用共享庫(.so)的新層的優先級爲7。

感謝

+0

您已添加層的依賴? –

+0

不,我沒有添加,因爲舊圖層將生成.so文件,只有當圖像生成時,我不知道如何添加依賴關係 –

回答

3

要添加的lib到您的gcc命令,你必須從修剪的名稱lib

變化

-libbbexample 

-lbbexample 

The man作爲參考。

如果這是不夠的,你必須盛大的.so文件編譯和安裝在helloworld之前的例子。您可以使用:

+0

由於.so文件只會在生成完整的yocto圖像時生成,我不知道天氣gcc將能夠找到.so文件,同時bitbake圖層。 –

+0

我不確定要取得你。您可以避免重建整個圖像。您可以使用'bitbake -c cleansstate' your_recipe_name將所有文件清理到temp/work目錄中。所以'bitbake your_recipe_name'重做你的配方整個工作。 – LPs

+0

不,先生,我說的是舊的圖層將生成.so文件,我只能看到.so文件,當我將閃爍伽利略板上的yocto圖像。所以如果我添加一個新的圖層到yocto,它是否能夠找到.so文件 –