问题:
装好CUDA5.5, samples也安装成功,编译也成功了,但是在运行程序的时候出问题了。
譬如进入NVIDIA_CUDA-5.5_Samples/7_CUDALibraries/ 目录中,执行 ./conjugateGradientPrecond
结果报错了,居然报错了:
./conjugateGradientPrecond: error while loading shared libraries: libcublas.so.5.5: cannot open shared object file: No such file or directory
解决:
首先找到libcublas.so.5.5 这个文件在哪里,在我的系统Ubuntu12.04,文件在 /usr/local/cuda-5.5/lib64/ 目录下。
然后 sudo vim /etc/ld.so.conf.d/cuda_lib.conf
在文档里添加目录 /usr/local/cuda-5.5/lib64/
写完后,然后 sudo ldconfig.
记住一定要用sudo,除非你在root下。
解释:
程序在编译的时候需要library,在执行的时候更需要library. LD_LIBRARY_PATH是编译时bash shell可以设定的环境变数,
但是程序在运行时,不一定会读取到这个变数,所以就要设定/etc/ld.so.conf.
但是通常我们会把费系统预设安装的函数库放在/etc/ld.so.conf里面,也就是说,今天cuda5.5的library的真实路径是
/usr/local/cuda-5.5/libXX
这个路径放在ld.conf可以读取到的地方。一般系统管理员的习惯会在ld.so.conf.d这个目录下再新增一个档案。档案名称就是XXX.conf
然后把library的path加入到这个档案里面,然后再ldconfig,系统就会重新设定。