linux - LD_LIBRARY_PATH 优先级

标签 linux operator-precedence dynamic-library

我刚刚偶然发现了一些奇怪的行为:在我启动我的应用程序之前,我将 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”,则应删除 RPATHRPATH 可以通过调用 chrpath 来删除命令。感谢大家的帮助!

关于linux - LD_LIBRARY_PATH 优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5368384/

相关文章:

C++命令乱序执行

linux - 无法在 linux 中复制共享库的软链接(soft link)及其原始大小

c - 如何在lua中卸载动态库

c++ - 这是定义明确的代码吗?

linux - 如何获取Linux进程“使用”的内存?

.net - 如何使用 Mono Develop 在 Linux 上创建 Excel 文件

linux - 在一个容器或多个容器 Docker 上运行多个服务?

php - 例如,变量赋值到 if 语句中

c++ - Netbeans/C++ : Link 2 projects together (Executable/Dynamic Library)

linux - 如果找到特定模式,AWK 或 sed 需要从输出中删除行