我刚刚偶然发现了一些奇怪的行为:在我启动我的应用程序之前,我将 LD_LIBRARY_PATH 设置为某个包含所有需要的库的本地库目录。启动后,我有一部分(大部分)库是从 LD_LIBRARY_PATH 加载的,但有一些是从标准/usr/lib(例如/usr/lib/libQtNetwork.so.4、/usr/lib/libSM.so. 6).所有这些库都包含在 LD_LIBRARY_PATH 中列出的目录中。谁能解释为什么我有这种行为? 我对 Linux 世界不是很熟悉,但是 this article说我的方法应该有效
附言如果我将/usr/libs 重命名为其他名称,我将运行我的应用程序,并使用从我的库位置使用的所有库
提前致谢!
最佳答案
我找到了答案,答案是RPATH。所有 Qt 库都是使用 RPATH=$QT_INSTALL_DIR 构建的,因此如果您想在 Linux 中创建“bundle”,则应删除 RPATH。 RPATH 可以通过调用 chrpath 来删除命令。感谢大家的帮助!
关于linux - LD_LIBRARY_PATH 优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5368384/