无法在 /etc/profile.d 中设置 LD_LIBRARY_PATH

pon*_*nir 3 command-line nvidia bash environment-variables mate

我已经在 Ubuntu Mate 16.04 中安装了 nVidia CUDA 7.5。但是,我在设置环境变量时遇到了问题。

这是nvidia-settings.sh我在/etc/profile.d文件夹中的文件:

export PATH=/usr/local/cuda-7.5/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:/usr/lib/nvidia-361:$LD_LIBRARY_PATH
export LIBRARY_PATH=/usr/lib/nvidia-361:/usr/local/cuda-7.5/lib64:$LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)

但是,重新启动后,LD_LIBRARY_PATH环境不会自动可用。这是显示问题的终端输出:

ponir@mate:~$ echo $LD_LIBRARY_PATH

ponir@mate:~$ echo $LIBRARY_PATH
/usr/lib/nvidia-361:/usr/local/cuda-7.5/lib64:
ponir@mate:~$ export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:/usr/lib/nvidia-361:$LD_LIBRARY_PATH
ponir@mate:~$ echo $LD_LIBRARY_PATH
/usr/local/cuda-7.5/lib64:/usr/lib/nvidia-361:
ponir@mate:~$ 
Run Code Online (Sandbox Code Playgroud)

但是export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:/usr/lib/nvidia-361:$LD_LIBRARY_PATH在终端中执行后,我可以获得该变量。

可能是什么问题?谢谢。

Zan*_*nna 5

来自Ubuntu wiki 帮助页面

注意:您只能在交互式 shell 中设置此环境变量。[即终端] 从 Ubuntu 9.04 Jaunty Jackalope 开始,LD_LIBRARY_PATH 不能在 $HOME/.profile、/etc/profile 和 /etc/environment 文件中设置。您必须使用 /etc/ld.so.conf.d/*.conf 配置文件。有关更多信息,请参阅 Launchpad 错误 #366728。

如何修复:

cd /etc/ld.so.conf.d
Run Code Online (Sandbox Code Playgroud)

.conf此处创建带有扩展名的文件

sudo nano cuda.conf
Run Code Online (Sandbox Code Playgroud)

将路径添加为两行

/usr/local/cuda-7.5/lib64
/usr/lib/nvidia-361
Run Code Online (Sandbox Code Playgroud)

保存并退出。检查ls -l该文件是否与目录中的其他文件具有相同的所有权和权限,它们应该是:

-rw-r--r-- 1 root root
Run Code Online (Sandbox Code Playgroud)

然后运行

ldconfig
Run Code Online (Sandbox Code Playgroud)

这不会设置 env 变量,但会适当地包含库以便 CUDA 工作