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

dwj*_*dwj 8 environment-variables

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

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

Kee*_*ook 6

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

LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/some/path/for/app"
Run Code Online (Sandbox Code Playgroud)

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

LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}/some/path/for/app
Run Code Online (Sandbox Code Playgroud)


Ext*_*der 2

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

# Begin /etc/ld.so.conf
/lib
/usr/lib
/usr/X11R6/lib
# whatever else #
Run Code Online (Sandbox Code Playgroud)

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

ldconfig
Run Code Online (Sandbox Code Playgroud)


Jac*_*ord 0

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