c++ - 与 g++ 的链接选项

标签 c++ c g++ shared-libraries

我有一个共享库需要加载到我的 java 应用程序中。

我的共享库“libabc.so”代码使用了 API 另一个共享库“libxyz.so”

尽管我通过头文件向我的库提供了这些 API 的声明,

当我构建我的共享库“libabc.so”时

g++ -shared -Wall -pthread -lrt

java 应用程序无法加载库。 而如果我用 g++ -shared -Wall -pthread -lrt -lxyz ,加载成功。

在这两个选项中,生成的库都没有报告任何错误。 但是对于第二个选项,无论我在哪里构建我的库,我都应该在环境中使用 libxyz.so。 还有其他选择吗?我在这里遗漏了什么吗?

最佳答案

恐怕这是不可能的。如果您正在构建依赖于另一个共享库库的共享库,则必须明确声明这种依赖性。否则动态链接器/加载器不可能解析所有依赖项。

如果您想摆脱依赖性并且可以访问 libxyz.so 的源代码(或者 libxyz.so 也可以用作 libxyz.a - 静态库),您可以尝试将它们捆绑到 libabc 中.so.

关于c++ - 与 g++ 的链接选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30982400/

相关文章:

c++ - 为什么我不能在我的程序中使用 "file_ptr>>variable"从文件中读取?

c - 实现二叉搜索树, "return from incompatible pointer type"

c++ - 如何使用 g++ 创建静态库?

c++ - 在 G++ 中使用 -frepo 选项

c++ - 如何在 makefile 指令中包含 C 和 C++ 文件

c++ - 通过模板化的友元类完美转发到私有(private)类构造函数

C++ 模板参数引用该模板中定义的类型

c++ - 如何在返回嵌入类型的泛型类之外实现成员函数?

当应用程序使用 poll() 而不是 linux 中的 epoll() 时,调用被路由到驱动程序

c - 与使用 malloc 在堆上分配内存相比,使用 int 数组有哪些优点?