为什么在 Ubuntu 下编译 CUDA 示例时找不到 libcudart.so.4

Why can't libcudart.so.4 be found when compiling the CUDA samples under Ubuntu?

本文关键字:找不到 libcudart so Ubuntu 编译 CUDA 为什么      更新时间:2023-10-16

我正在尝试运行我的 Cuda SDK 示例,但出现以下错误:

./bandwidthTest: error while loading shared libraries:
                 libcudart.so.4: cannot open shared object file:
                 No such file or directory

为什么我可以成功编译示例,但不能运行它? 有没有办法手动指定 CUDA 运行时库的路径?

尝试:

32 位:sudo ldconfig /usr/local/cuda/lib

64 位:sudo ldconfig /usr/local/cuda/lib64

干杯

首先,您需要连接指向 CUDA 二进制文件和库的路径。只需将以下行添加到 .bashrc 文件中即可完成此操作。

export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=:/usr/local/cuda/lib64

如果您使用的是 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

这应该允许您编译 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

也就是说,从 12.04 开始,Ubuntu 上的 lib 文件夹是 lib32 和 lib;64 是隐式的,cuda 5.5 及更高版本现在安装到不同的目录。

加载

共享库时出现 1 个错误:libcudart.so.6.0:无法打开共享对象文件:没有这样的文件或目录

  32-bit: sudo ldconfig /usr/local/cuda/lib
  64-bit: sudo ldconfig /usr/local/cuda/lib64

(参考: http://blog.csdn.net/shenchong721/article/details/21529295)

对我有用!

LD_LIBRARY_PATH被强烈弃用。它可能会搞砸其他程序,其他人可能会重置它。它应该只用于临时覆盖永久路径以进行测试(不要相信我的话,谷歌一下)。

相反,在任何

现有行之后,将一行包含您的 cuda lib 目录的行添加到/etc/ld.so.conf。

例如,如果你安装在/usr/local/cuda 上,你将需要添加

32 位:/usr/local/cuda/lib

64 位:/usr/local/cuda/lib64

保存并运行 ldconfig。这应该可以永久解决问题。

符号链接可能已由安装设置。如果没有,请按照亚历克斯的建议添加它们。

注意 - 我收到了引用/lib 的错误,但我需要添加 lib64 来修复它们。

/etc/ld.so.conf.d/中创建一个 nvidia_settings.conf 文件,并将库的路径添加到文件 nvidia_settings.conf

 /usr/local/cuda/lib64
 /usr/local/cuda/lib

现在要更新更改,请运行以下命令:

sudo ldconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib

或者如果您在 5.0 位计算机上运行 CUDA-64

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-5.0/lib64

系统使用 ld 工具查找库。 正如顶部答案所说,64 位:sudo ldconfig/usr/local/cuda-xx/lib64 ;;xx 是库达图书馆版

就我而言,我正在使用 MPI 运行应用程序。错误是:

libcudart.so.7: cannot open shared object file

CUDA 已正确安装在所有节点中。此外,与前面的答案一样,变量 $PATH 和 $LD_LIBRARY_PATH 分别指向二进制文件和库。

在 MPI 命令中传递 $PATH 和 $LD_LIBRARY_PATH 解决了这个问题。

mpirun -x PATH=$PATH -x LD_LIBRARY_PATH=$LD_LIBRARY_PATH ...