2016-04-06 63 views
0

Hello Worldプロジェクトに基づいてEclipseYocto autotoolsプロジェクトを作成しました。Eclipseのyocto autotoolsプロジェクトに静的なlibをリンクするには

私は自分のコードをいくつかのlibsに分けて、静的なlibs(.a)の形でプロジェクトにリンクしたいと思っていました。

私は1つのアプリといくつかの静的ライブラリを持っています。しかし、私が何を試みても、自分のコードをコンパイルすることはできません。それぞれの個別のlibは.aファイルをコンパイルして生成しますが、私のアプリケーションには含まれません。

ウェブを検索した後、私は可能な解決策を持っている - 私の静的LIBSへの直接リンクを追加:これはlibEncoding2.aは、そのパスに存在して私のMakefile.amファイル、ある

MyApp_CPPFLAGS="-I$LOCATION" 
MyApp_LDADD="/home/xxx/workspace/MyApp/Encoding2/Debug/libEncoding2.a" 

を。

私が手にエラーがある:

make[2]: *** No rule to make target `"/home/xxx/workspace/MyApp/Encoding2/Debug/libEncoding2.a"', needed by `MyApp'. Stop. 

私はすでにメイク試みをしても必要な理由私はわからないLIBを構築しました。

ご協力いただければ幸いです。

答えて

0

libtoolを使用しているかどうかに応じて、それぞれnoinst_LTLIBRARIESまたはnoinst_LIBRARIESのターゲットのリストが必要です。これはあなたのライブラリーの名前のみ含めるべきである(libEncoding2.laまたはlibEncoding2.aを。)

ので、あなたが探していたこと

MyApp_CPPFLAGS = -I$LOCATION 
MyApp_LDADD = libEncoding2.la # or .a 
で、あなたがこのために完全なパスを使用しないでください、とあなたが 引用変数を作るべきではありません

これはうまくいくはずです。

しかし、それはあなたが探しているものではないかもしれないので、autotoolsの仕組みを理解するのに時間がかかるようです。一粒の塩で、私のAutotools Mythbusterを出発点として取ることができます。あなたのレシピで静的ライブラリを使用しているため

0

、あなたはあなたの静的ライブラリにリンクするには、次のコマンドを使用して、ハロー世界-0.1、すなわち、プロジェクトのソースフォルダにライブラリへのソフトリンクを作成することができます

ln -s /home/xxx/workspace/MyApp/Encoding2/Debug/libEncoding2.a 
プロジェクト

0123をコンパイルするフォローコマンドを使用して、その後

とあなたのURL

SRC_URI = " \ 
    file://libEncoding2.a \ 
    file://hello-world.c \ 
" 

とdo_compileブロック内にソースパスを追加し、あなたのBBファイル、hello-world_0.1.bbを編集し、

あなたのプロジェクト

bitbake hello-world 

bitbakeとmkefidisk.shを実行した後、あなたは/usr/bin/Hello/hello-worldhello-worldを見つけることができます。このヒントがあなたを助けてくれることを願っています。

私はautotoolsに精通していません。makeを使用してレシピをビットベイクします。そして静的ライブラリはYoctoで作成する必要があります。Eclipseではそうは思いません。だから私はあなたの静的ライブラリのパスが正しくない可能性があります、それは~/yocto/build/tmp/...またはいくつかの場所にこれを見つける必要があります。私の場合、それはln -s ~/yocto/build/tmp/sysroots/intel-corei7-64/usr/lib/libEncoding.aにあり、あなたの目標環境に依存しています。

関連する問題