nvcc编译CUDA代码时ld提示找不到lcudadevrt、lcudart_static库如何解决
CUDA 编译链接找不到依赖库解决方案
误区澄清
你配置的
LD_LIBRARY_PATH仅用于程序运行时动态库的查找,编译阶段的链接器ld不会读取该环境变量,因此无法解决编译时库找不到的问题。
分步解决方法
- 第一步:定位CUDA静态库所在路径
执行以下命令查找libcudart_static.a的实际位置:find /usr -name "libcudart_static.a" 2>/dev/null
常规安装路径参考:- 英伟达官方.run包安装:
/usr/local/cuda/lib64(64位系统) - 系统软件源安装CUDA:
/usr/lib/x86_64-linux-gnu/(x86架构)
- 英伟达官方.run包安装:
- 第二步:单次编译临时指定库路径
在原编译命令后追加-L参数指向你上一步查到的库目录即可,示例:nvcc -o hello hello.cu -L/usr/local/cuda/lib64 - 第三步:永久生效配置(可选)
不需要每次编译都加-L参数的话,可以把CUDA库路径加入系统链接器配置:- 新建配置文件:
sudo nano /etc/ld.so.conf.d/cuda.conf - 在文件内写入你的CUDA库路径,比如
/usr/local/cuda/lib64,保存退出 - 执行命令生效配置:
sudo ldconfig
- 新建配置文件:
- 第四步:缺失开发包排查
如果以上操作后仍报错,说明你没有安装完整的CUDA开发组件,部分发行版会拆分CUDA包,需要额外安装cudart开发包,以Ubuntu为例:sudo apt install cuda-cudart-dev-<你的CUDA版本号>
比如CUDA12版本就填cuda-cudart-dev-12-0之类的对应版本号即可。
内容的提问来源于stack exchange,提问作者yiming yang
相关产品推荐
相关产品推荐

