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

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

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

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

答案1

这似乎是应用程序本身的一个错误。它应该有一个包装器脚本,可以正确设置任何所需的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

答案3

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

答案4

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

相关内容