我有一个可执行文件A,它动态加载B.so,而B.so又取决于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一起工作吗?
rpath应该指向一个目录而不是共享对象文件,尝试-Wl,-rpath,/path/to/
而不是-Wl,-rpath,/path/to/C.so
问题是rpath实际上没有被修改。
我使用ldd来检查共享对象文件是否真的被加载了,但它们并没有。然后我使用readelf-b,发现RPATH不正确。