QLibrary使用-rpath加载

时间:2017-01-25 17:27:31

标签: linux qt ldd rpath qlibrary

我有一个动态加载B.so的可执行文件A,后者依赖于C.so. C.so与A和B不在同一个文件夹中。

我正在尝试使用QLibrary.load()加载B.so但是由于QLibrary.errorString()返回库C.so无法加载而无法加载。

QLibrary文档说可以使用LD_LIBRARY_PATH,但我不想这样做。我在链接B.so时使用-Wl,-rpath,/ path / to / C /,但它对动态加载没有帮助。

有关如何在不诉诸LD_LIBRARY_PATH的情况下加载B.so的任何建议?我可以使用-rpath吗?

2 个答案:

答案 0 :(得分:0)

rpath应指向不是共享对象文件的目录,请尝试-Wl,-rpath,/path/to/而不是-Wl,-rpath,/path/to/C.so

答案 1 :(得分:0)

问题是rpath实际上没有被修改。

我使用ldd检查共享对象文件是否实际被加载,而不是。然后我用readelf -b发现RPATH不正确。