链接选项与g ++

时间:2015-06-22 14:22:53

标签: 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,无论我在构建我的库。 还有其他选择吗?我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:2)

恐怕这是不可能的。如果要构建依赖于另一个共享库的共享库,则必须显式声明此依赖项。否则,动态链接器/加载器无法解析所有依赖关系。

如果你想摆脱依赖,如果你有权访问libxyz.so的源代码(或者libxyz.so也可以作为libxyz.a - 一个静态库),你可以尝试将它们捆绑到libabc中的.so。