我刚刚从CUDA 4.2升级到CUDA 5.0。毫不奇怪,曾经被命名为libcudart.so.4
的库现在被称为libcudart.so.5.0
。重新编译代码才能使用NVCC 5.0,并试图运行代码后,我得到这个消息:CUDA 5.0希望来自CUDA 4.0的libcudart?
./main: error while loading shared libraries: libcudart.so.4: cannot open shared object file: No such file or directory
呀,你这个愚蠢的系统,我知道有没有libcudart.so.4
。这是因为它现在被称为libcudart.so.5.0
。 为什么它寻找libcudart.so.4
而不是libcudart.so.5.0
,我该如何解决?
我试过到目前为止:
我检查了我所有的路径都井然有序。这些环境变量设置:
export PATH=$PATH:/usr/local/cuda/bin:/usr/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib:/usr/local/cuda/lib64:/lib
#note: /usr/local/cuda is symlinked to /usr/local/cuda-5.0
我验证过libcudart.so.5.0
可以在LD_LIBRARY_PATH
目录中找到。
我用CUDA 5.0版本nvcc
重新编译了我的CUDA应用程序。我成功编译并在另一台装有CUDA 4.2的机器上运行我的应用程序,并在另一台装有CUDA 4.0的机器上运行我的应用程序。
我证实,nvcc
真的是在5.0版本:
[email protected]$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2012 NVIDIA Corporation
Built on Fri_Sep_21_17:28:58_PDT_2012
Cuda compilation tools, release 5.0, V0.2.122
也许这很明显,但'nvcc'似乎是静态链接到'libcudart.a'版本4.也许这就是隐藏在你的lib路径的某处? –
是的,这就是发生了什么!我只是擦了旧的显示驱动程序,并重新安装它,现在看起来好了。随意发表您的评论作为答案,我会接受它。 :) – solvingPuzzles