2016-10-11 10 views
1

ターゲットシステムでのみ利用可能な共有ライブラリにリンクする方法はありますが、クロスコンパイルに使用するシステムにはリンクできませんか?私は、ターゲットシステム上の共有ライブラリにリンクされている別の共有ライブラリをコンパイルする必要があります。クロスコンパイル:ターゲットシステムでのみ利用可能なライブラリへのリンク

私のソースコードディレクトリには、関数宣言を含むヘッダファイルを含むインクルードディレクトリがあります。

arm-linux-gnueabi-g++ -Wall -fPIC -I include/ -c mysource1.cpp 
arm-linux-gnueabi-g++ -Wall -fPIC -I include/ -c mysource2.cpp 

この状態では、エラーや警告はありません。次のコマンド

arm-linux-gnueabi-g++ -shared -fPIC -rdynamic mysource1.o mysource2.o -L /usr/lib/libtargetsys_shlib.so -Wl,-z,defs -o another_shared_lib.so 

は、次のエラーが報告されます

mysource2.o: In function `my_func_2': 
mysource2.cpp:(.text+0xe): undefined reference to `share_lib_func' 

shared_lib_funcは、ターゲット・システムの共有ライブラリに存在しています。

答えて

1

クロスコンパイル後のリンクでは、ネイティブのライブラリは必要ありません。ターゲットシステムからライブラリが必要です。それをビルドシステムにコピーします。

+0

はい、私は、開発システム上にライブラリを全く持たずにリンクを行う方法があるのだろうかと思っていました。しかし、私はそうではないと思います。 – jabe

関連する問題