我刚从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的CUDA5.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发布于 2013-10-20 21:56:51
我想把这个问题从未回答的名单中删除,我不认为@Jared Hoberock会介意,所以我将把他的评论作为回答。如果有问题,并且Jared或solvingPuzzles发布了一个答案,我将删除我的(假设它不被接受--我不能删除一个已被接受的answere )。
nvcc似乎是静态地链接到libcudart.a版本4。
在库路径中的某个地方,nvcc似乎正在找到一个需要删除的旧libcudart.a。
对于其他读者来说,找到系统上的所有libcudart.*实例并删除任何与您想要的CUDA版本不匹配的实例可能就足够了(假设您不试图运行一台具有多个CUDA版本的机器-在这种情况下,编译和运行的库路径必须得到适当的管理)。
https://stackoverflow.com/questions/14348929
复制相似问题