我在 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 顶部附近,以在启动时进行系统范围的更改。