jpe*_*pen 2 c eclipse linux eclipse-cdt
我在Eclipse中有两个C共享库项目,它们被称为"MyLibA"和"MyLibB":
TestA.h
int Test1(void);
int Test2(void);
Run Code Online (Sandbox Code Playgroud)
TestA.c
#include "TestA.h"
int Test1(void) { return 1; }
int Test2(void) { return 2; }
Run Code Online (Sandbox Code Playgroud)
TestB.h
int Test(void);
Run Code Online (Sandbox Code Playgroud)
TestB.c
#include "TestB.h"
#include "TestA.h"
int Test(void) { return Test1() + Test2(); }
Run Code Online (Sandbox Code Playgroud)
"MyLibA"和"MyLibB"分别产生"libMyLibA.so"和"libMyLibB.so".
我还有一个C可执行项目"MyExe":
#include "TestB.h"
int main(void)
{
Test();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
MyExe的属性已设置,因此它知道在哪里可以找到"TestB.h"和"libMyLibB.so".它还链接到"MyLibB".
当我编译"MyExe"时,我收到以下错误和警告:
错误:
make: *** [MyExe] Error 1
recipe for target `MyExe' failed
Run Code Online (Sandbox Code Playgroud)
警告:
libMyLibA.so, needed by libMyLibB.so, not found (try using -rpath or -rpath-link)
Run Code Online (Sandbox Code Playgroud)
如果我修改MyExe的属性,它们就会消失并且MyExe构建文件,以便它知道在哪里找到"libMyLibA.so"并链接到它但这并不理想.
例如,如果您使用的依赖于许多其他.so文件的.so文件,则必须手动链接到它们.
有办法解决这个问题吗?
使用-rpath选项.
在Eclipse CDT中,右键单击"MyExe"项目 - >属性 - > C/C++构建 - >设置 - >工具设置 - >**C链接器 - >其他 - >其他选项
加
-rpath"libMyLibA.so的路径"
| 归档时间: |
|
| 查看次数: |
4189 次 |
| 最近记录: |