我有一个共享库需要加载到我的 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/