我有一个需要在我的java应用程序中加载的共享库。
我的共享库" libabc.so"代码使用的API 另一个共享库" libxyz.so"
虽然我通过头文件向我的库提供这些API的声明,
当我构建我的共享库" libabc.so"与
g ++ -shared -Wall -pthread -lrt
java应用程序无法加载库。 而如果我用它建造它 g ++ -shared -Wall -pthread -lrt -lxyz,它成功加载。
在两个选项中,生成库时没有报告任何错误。 但对于第二个选项,我应该在环境中提供libxyz.so,无论我在构建我的库。 还有其他选择吗?我在这里错过了什么吗?
答案 0 :(得分:2)
恐怕这是不可能的。如果要构建依赖于另一个共享库的共享库,则必须显式声明此依赖项。否则,动态链接器/加载器无法解析所有依赖关系。
如果你想摆脱依赖,如果你有权访问libxyz.so的源代码(或者libxyz.so也可以作为libxyz.a - 一个静态库),你可以尝试将它们捆绑到libabc中的.so。