我在 Eclipse 中有两个 C 共享库项目,分别称为“MyLibA”和“MyLibB”:
测试A.h
int Test1(void);
int Test2(void);
测试A.c
#include "TestA.h"
int Test1(void) { return 1; }
int Test2(void) { return 2; }
测试B.h
int Test(void);
测试B.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)
如果我修改 MyExe 的属性,它们就会消失,MyExe 会构建文件,以便它知道在哪里可以找到“libMyLibA.so”并链接到它,但这并不理想。
例如,如果您使用的 .so 文件依赖于许多其他 .so 文件,那么您必须手动链接到它们。
有没有办法解决这个问题?