我在 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
这很有趣。输出nvcc
:
nvcc fatal : No input files specified; use option --help for more information
而输出sudo nvcc
:
sudo: nvcc: command not found
~/.bashrc
我在AND中列出了相同的出口/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
提前致谢!
答案1
因此,显然,当您使用 运行它时,nvcc
不在 上。您可以使用以下命令确认这一点:PATH
sudo
sudo bash -c 'echo $PATH'
最简单的解决方案是sudo
使用绝对路径调用nvcc
:
sudo $(which nvcc)
当运行没有绝对路径的命令时,如nvcc
,使用中的配置sudo
值作为,例如在我的系统中:secure_path
/etc/sudoers
PATH
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
因此,即使您设置了PATH
shell 通常提供的启动文件之一,它也不会起作用。如果您想sudo nvcc
暂时让工作,只是为了让您的构建工作,我认为您有两个选择:
- 编辑安装程序脚本并将以下行更改
sudo nvcc
为sudo /path/to/nvcc
nvcc
在 列出的目录之一中创建符号链接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
答案2
您可以使用-E
选项来sudo
保留您的用户环境。从手册页中:
-E, --preserve-env
Indicates to the security policy that the user wishesto preserve their existing environment
variables. The security policy may return an error if the user does not have permission to
preserve the environment.
您可以使用以下方法测试:
$ sudo bash -c 'echo $PATH'
进而
sudo nvcc
答案3
原因可能是只读文件夹。就我而言,调用 nvcc 的“Make”文件位于只读文件夹中。更改文件夹权限设置解决了我的问题。