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