「MyLibA」と「MyLibB」と呼ばれる 2 つの C 共有ライブラリ プロジェクトが Eclipse にあります。
TestA.h
int Test1(void);
int Test2(void);
TestA.c
#include "TestA.h"
int Test1(void) { return 1; }
int Test2(void) { return 2; }
TestB.h
int Test(void);
TestB.c
#include "TestB.h"
#include "TestA.h"
int Test(void) { return Test1() + Test2(); }
「MyLibA」と「MyLibB」は、それぞれ「libMyLibA.so」と「libMyLibB.so」を生成します。
C 実行可能プロジェクト「MyExe」もあります。
#include "TestB.h"
int main(void)
{
Test();
return 0;
}
MyExe のプロパティは、"TestB.h" と "libMyLibB.so" の場所を認識できるように設定されています。「MyLibB」にもリンクしています。
「MyExe」をコンパイルすると、次のエラーと警告が表示されます。
エラー:
make: *** [MyExe] Error 1
recipe for target `MyExe' failed
警告:
libMyLibA.so, needed by libMyLibB.so, not found (try using -rpath or -rpath-link)
「libMyLibA.so」を見つけてリンクする場所を認識できるように MyExe のプロパティを変更すると、それらは消え、MyExe はファイルをビルドしますが、これは理想的ではありません。
たとえば、他の多くの .so ファイルに依存する .so ファイルを使用している場合は、それらに手動でリンクする必要があります。
この問題を回避する方法はありますか?