dsp*_*099 3 nvidia bash sudo cuda bashrc
我无法在 linux 上运行任何东西。我正在尝试编译 CudaMiner。的输出sudo make:
ypt-jane.o `test -f 'scrypt-jane.cpp' || echo './'`scrypt-jane.cpp
mv -f .deps/cudaminer-scrypt-jane.Tpo .deps/cudaminer-scrypt-jane.Po
nvcc -g -O2 -Xptxas "-abi=no -v" -arch=compute_10 --maxrregcount=64 --ptxas-options=-v -I./compat/jansson -o salsa_kernel.o -c salsa_kernel.cu
/bin/bash: nvcc: command not found
make[2]: *** [salsa_kernel.o] Error 127
make[2]: Leaving directory `/var/progs/CudaMiner'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/var/progs/CudaMiner'
make: *** [all] Error 2
Run Code Online (Sandbox Code Playgroud)
所以,有点意思。的输出nvcc:
nvcc fatal : No input files specified; use option --help for more information
Run Code Online (Sandbox Code Playgroud)
而输出sudo nvcc:
sudo: nvcc: command not found
Run Code Online (Sandbox Code Playgroud)
我在~/.bashrcAND 中列出了相同的出口/etc/bash.bashrc。(NVCC位于:/usr/local/cuda-5.0/bin/nvcc)
我也尝试更改当前路径,但无济于事:
$ sudo bash -c 'echo $PATH'
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$ PATH=$PATH:/usr/local/cuda-5.0/bin/nvcc
$ sudo bash -c 'echo $PATH'
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Run Code Online (Sandbox Code Playgroud)
提前致谢!
因此很明显,nvcc是不是就PATH当你运行它sudo。您可以通过以下方式确认:
sudo bash -c 'echo $PATH'
Run Code Online (Sandbox Code Playgroud)
最简单的解决方案是sudo使用绝对路径调用nvcc:
sudo $(which nvcc)
Run Code Online (Sandbox Code Playgroud)
当运行没有绝对路径的命令时,如nvcc,sudo使用secure_path配置的值/etc/sudoers作为PATH,例如在我的系统中:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Run Code Online (Sandbox Code Playgroud)
因此,即使您设置PATH了 shell 通常提供的启动文件之一,它也不会工作。如果你想sudo nvcc暂时工作,只是为了让你的构建工作,我认为你有两个选择:
sudo nvcc为sudo /path/to/nvccnvcc在 中列出的目录之一中创建符号链接secure_path,如下所示:sudo ln -s /path/to/nvcc /sbin/nvcc更新
如果您很难找到 的路径nvcc,您可以按以下顺序尝试这些命令(它们变得越来越慢),直到找到匹配项:
which nvcc
find /usr/local/cuda-5.0 -name nvcc
find /usr/local/ -name nvcc
find /opt -name nvcc
find / -name nvcc
Run Code Online (Sandbox Code Playgroud)