为从桌面启动的应用程序设置LD_LIBRARY_PATH


8

我在Ubuntu 10.04 LTS上安装了Qt Creator。当我从桌面启动Qt Creator时,我可以构建正在使用的应用程序,但是无法运行或调试它。经过很多努力后,我发现未为从桌面运行的应用程序设置LD_LIBRARY_PATH。如果我从bash(在.bashrc中设置了LD_LIBRARY_PATH)启动Qt Creator,那么一切都会完美地运行和调试。

如何设置LD_LIBRARY_PATH,以便为所有正在运行的应用程序设置它?

Answers:


6

这似乎是应用程序本身的错误。它应该具有正确设置任何所需LD_LIBRARY_PATH变量的包装器脚本。但是,编写此类脚本时要小心,因为您不希望在LD_LIBRARY_PATH用作路径分隔符的冒号之间保留字符串的任何空白部分。例如,如果变量最初为空(这会导致冒号前的前导空字符串),则这可能会导致路径错误:

LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/some/path/for/app"

因此,添加路径时,您首先需要测试空字符串。例如,使用shell代码:

LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}/some/path/for/app

2

创建一个新文件/etc/ld.so.conf,其中包含:

# Begin /etc/ld.so.conf
/lib
/usr/lib
/usr/X11R6/lib
# whatever else #

通过运行以下命令更新动态加载程序缓存:

ldconfig

0

此外.bashrc,还应在中设置环境变量.profile。该文件将在您的会话中得到处理和加载,因此它将影响以用户身份运行的所有内容。另外:该文件说如果.bashrc存在,Bash不会读取它,但是它似乎仍然适用(可能是因为Bash从其开始继承了X会话)。不过,在两个文件中都包含变量不会有什么坏处。


我也尝试创建.profile,但是没有运气。
dwj

我在某处读到了Ubuntu(Debian?)的“安全”功能,该功能不能让您在启动时设置LD_LIBRARY_PATH,因为它在加载.profile后会被覆盖。仍然有解决方法。
alfC


0

在靠近顶部的/etc/bash.bashrc中进行设置,以在启动时进行系统范围的更改。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.