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 以便为所有正在运行的应用程序设置它?
这似乎是应用程序本身的错误。它应该有一个包装脚本,可以正确设置任何需要的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)
创建一个新文件 /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)
除此之外.bashrc,还要设置环境变量.profile。该文件将由您的会话处理和加载,因此它应该会影响以您的用户身份运行的所有内容。另外:该文件表示,如果存在的话,Bash 不会读取它.bashrc,但它似乎仍然适用(可能是因为 Bash 从启动位置继承了 X 会话)。不过,在两个文件中都包含该变量并没有什么坏处。