gpt4 book ai didi

c - Eclipse CDT - 共享库依赖性问题

转载 作者:太空狗 更新时间:2023-10-29 11:38:55 24 4
gpt4 key购买 nike

我在 Eclipse 中有两个 C 共享库项目,分别称为“MyLibA”和“MyLibB”:

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)

如果我修改 MyExe 的属性以便它知道在哪里可以找到“libMyLibA.so”并链接到它,它们就会消失并且 MyExe 会构建文件,但这并不理想。

例如,如果您使用的 .so 文件依赖于许多 其他 .so 文件,那么您必须手动链接到它们。

有没有办法解决这个问题?

最佳答案

使用 -rpath 选项。

在 Eclipse CDT 中,右键单击“MyExe”项目 -> Properties -> C/C++ Build -> Settings -> Tool Settings -> ** C Linker -> Miscellaneous -> Other options

添加

-rpath “libMyLibA.so 的路径”

关于c - Eclipse CDT - 共享库依赖性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12405257/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com