LD_LIBRARY_PATH优先级

ixS*_*Sci 5 linux operator-precedence dynamic-library

我偶然发现了一些奇怪的行为:在我启动应用程序之前,我已将LD_LIBRARY_PATH设置为包含所有所需库的本地lib目录.启动后,我有部分(大部分)libs从LD_LIBRARY_PATH加载,但有一些是从标准/ usr/lib加载的(例如/usr/lib/libQtNetwork.so.4,/usr/lib/libSM.so. 6).所有这些库都包含在LD_LIBRARY_PATH中列出的目录中.任何人都可以解释为什么我有这样的行为?我对Linux世界不是很熟悉,但是本文说我的方法应该有效

PS如果我将/ usr/libs重命名为其他东西,我将使用从我的libs位置使用的所有lib运行我的应用程序

预先感谢!

ixS*_*Sci 4

我找到了答案,答案是RPATH。所有 Qt 库都是使用 RPATH=$QT_INSTALL_DIR 构建的,因此如果您想在 Linux 中创建“捆绑包”,则应删除RPATH 。可以通过调用chrpath命令删除RPATH 。感谢大家的帮助!