【发布时间】:2013-01-15 23:35:02
【问题描述】:
我刚刚从 CUDA 4.2 升级到 CUDA 5.0。毫不奇怪,曾经被命名为libcudart.so.4 的库现在被称为libcudart.so.5.0。使用 nvcc 5.0 重新编译我的代码并尝试运行代码后,我收到以下消息:
./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 目录之一中找到。
我使用nvcc 的 CUDA 5.0 版本重新编译了我的 CUDA 应用程序。我在另一台装有 CUDA 4.2 的机器上和另一台装有 CUDA 4.0 的机器上成功编译并运行了我的应用程序。
我确认nvcc 确实是 5.0 版:
user@host$ 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 路径中的某个地方? -
是的,就是这样!我刚刚擦掉了旧的显示驱动程序并重新安装了它,现在似乎可以了。随时发表您的评论作为答案,我会接受。 :)