Ale*_*lex 26 c++ unix ubuntu cuda gpu-programming
我正在尝试运行我的Cuda SDK示例,但是我收到以下错误:
./bandwidthTest: error while loading shared libraries:
libcudart.so.4: cannot open shared object file:
No such file or directory
Run Code Online (Sandbox Code Playgroud)
为什么我可以成功编译示例,但不能运行它?有没有办法手动指定CUDA运行库的路径?
sj7*_*755 12
首先,您需要将这些路径连接到CUDA二进制文件和库.这可以通过在.bashrc文件中添加以下行来完成.
export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=:/usr/local/cuda/lib64
Run Code Online (Sandbox Code Playgroud)
如果您使用的是32位操作系统,请将lib64更改为lib
其次,应该在/ usr/lib或/ usr/lib64中安装一些共享对象文件,具体取决于您的操作系统.这些目标文件应包含在名为"nvidia"的目录中.我们关注的两个文件是名称libcuda.so.drivernumber和libOpenCL.so.somenumber.要区分刚才使用的实际共享对象文件ls -l
.符号链接将显示它们实际链接到的内容.
以root用户身份执行以下命令:
ln -s /usr/lib64/nvidia/libcuda.so.somenumber /usr/lib64/libcuda.so
ln -s /usr/lib64/nvidia/libOpenCL.so.somenumber /usr/lib64/libOpenCL.so
Run Code Online (Sandbox Code Playgroud)
这应该允许您编译SDK中的所有源.
从Cuda 5.5和Ubuntu 12.04/12.10开始,上面的命令变为(注意Ubuntu和Cuda目录的更改)为64位
ln -s /usr/local/cuda/lib64/libcuda.so.5.5 /usr/lib/libcuda.so.5.5
Run Code Online (Sandbox Code Playgroud)
也就是说,截至12.04的Ubuntu上的lib文件夹是lib32和lib; 64是隐式的,cuda 5.5和更高版本现在安装到不同的目录.
小智 6
加载共享库时出错1:libcudart.so.6.0:无法打开共享对象文件:没有这样的文件或目录
32-bit: sudo ldconfig /usr/local/cuda/lib
64-bit: sudo ldconfig /usr/local/cuda/lib64
Run Code Online (Sandbox Code Playgroud)
(参见:http://blog.csdn.net/shenchong721/article/details/21529295)
适合我!
小智 5
LD_LIBRARY_PATH被强烈弃用.它可能搞乱其他程序,其他程序可能会重置它.它应该仅用于暂时覆盖永久路径以进行测试(不要理会我的话,谷歌吧).
相反,在任何现有行之后,在/etc/ld.so.conf上添加一行cuda lib目录.
例如,如果您安装在/ usr/local/cuda上,则需要添加
32位:/ usr/local/cuda/lib
64位:/ usr/local/cuda/lib64
保存,然后运行ldconfig.这应该永久解决问题.
符号链接可能已由安装设置.如果没有,那么按照Alex的建议添加它们.
注意 - 我收到引用/ lib的错误,但我需要添加lib64来修复它们.