2016-11-08 16 views
2

私はYoctoのusr/lib(libbbexample.so)ディレクトリに共有ライブラリを作成するレイヤーを持っています。ライブラリにはいくつかの機能が含まれています。Yocto- gccは共有ライブラリを見つけることができません

だから、私はので、私は新しい層bitbakeみました

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; 
} 

から提供される機能を使用するプログラムを書いている別の新しいレイヤーを作成しましたが、私は

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

do_install() { 
     install -d ${D}${bindir} 
     install -m 0755 helloworld ${D}${bindir} 
} 
を次のように新たな層の.BBファイルの内容がエラーに "cannot find -libbbexample"

を取得しています

共有ライブラリを作成する古いレイヤーの優先度を6 、共有ライブラリ(.so)を7とする新しいレイヤーの優先度を設定しました。あなたが名前からlibをトリミングする必要があり、あなたのgccコマンドにLIBを追加するには

おかげ

+0

は、あなたがその層の依存関係を追加したことがありますか? –

+0

古いレイヤーは.soファイルを生成するため、画像が生成されるときにのみ、依存関係の追加についてはわかりません。 –

答えて

3

。参照として

-lbbexample 

The man

変更

-libbbexample 

これで十分でない場合は、helloworldの例の前に.soファイルをコンパイルしてインストールする必要があります。あなたは使用することができます。

+0

.soファイルは、yoctoイメージ全体が生成されたときにのみ生成されるため、私は気象gccが層をbitbakeしている間に.soファイルを見つけることができることを知っていません。 –

+0

私はあなたを取得するか分からない。画像全体の再構築を避けることができます。 'bitbake -c cleansstate' your_recipe_nameを使ってすべてのファイルをtemp/workディレクトリにクリーンアップすることができます。だから 'bitbake your_recipe_name'はあなたのレシピの仕事全体をやり直します。 – LPs

+0

いいえ、私が言っていたのは、古いレイヤーが.soファイルを生成し、ガリレオボード上のyoctoイメージをフラッシュするときだけ、.soファイルを見ることができるということです。ですから、yoctoに新しいレイヤーを追加すると、.soファイルを見つけることができます –

関連する問題