2016-11-08 90 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文件 –