Ubuntu 16.04下CUDA 9.0 Samples编译失败:ld无法找到-lcudart
解决Ubuntu 16.04编译CUDA 9.0示例时
can't find -lcudart的问题 我之前碰到过不少用户遇到这个情况——明明CUDA安装正常,nvcc -V和驱动版本都没问题,但编译官方示例就是卡在链接阶段找不到libcudart。本质原因是链接器ld没有找到CUDA库文件的路径,和nvcc能正常工作是两回事(nvcc的路径在PATH里,但库路径需要单独配置)。
试试下面这些步骤,按顺序来:
- 第一步:确认库文件是否存在
先检查CUDA 9.0的cudart库有没有安装到位:
ls /usr/local/cuda-9.0/lib64/libcudart.so
如果输出文件路径,说明库存在,只是路径没被链接器识别;如果提示文件不存在,那可能是CUDA安装不完整,需要重新跑CUDA安装包修复。
- 第二步:临时设置环境变量(当前终端生效)
在编译示例的终端里,先手动添加库路径:
export LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LIBRARY_PATH export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH
然后重新执行make,看看能不能通过。
- 第三步:永久配置环境变量(避免每次终端都要设置)
如果临时设置有效,把环境变量加到你的用户配置文件里:
- 打开
~/.bashrc文件:
nano ~/.bashrc
- 在文件末尾添加两行:
export LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LIBRARY_PATH export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH
- 保存退出后,让配置生效:
source ~/.bashrc
- 第四步:如果还是不行,直接给make指定库路径
可以在make命令里强制指定链接器的库搜索路径:
make LDFLAGS="-L/usr/local/cuda-9.0/lib64"
- 额外检查:CUDA软链接是否正确
有些时候,系统默认会用/usr/local/cuda作为CUDA的默认路径,但如果安装后没自动创建软链接,也会导致路径问题:
ls -l /usr/local/cuda
如果输出不是指向cuda-9.0,就手动创建软链接:
sudo ln -s /usr/local/cuda-9.0 /usr/local/cuda
按这些步骤来,基本能解决链接器找不到libcudart的问题。
内容的提问来源于stack exchange,提问作者guorui
相关产品推荐
相关产品推荐

