问题描述
jetson nano 编译出现/usr/bin/ld: cannot find -lcudart
问题分析
在 Jetson Nano 上编译时遇到 /usr/bin/ld: cannot find -lcudart 错误,表示编译器无法找到名为 libcudart 的 CUDA 运行时库。
CMakeLists.txt 里面添加库路径。
解决办法
要解决这个问题,您可以尝试以下步骤:
检查 CUDA 安装:一般这个在nano上都是jetpack 已经安装了。
检查库文件是否存在:确保 CUDA 运行时库文件 libcudart.so 存在于库路径中。您可以使用以下命令来查找该文件:
find /-name "libcudart.so"
如果找不到该文件,请检查您的 JetPack 安装是否完整,并根据需要重新安装 JetPack。
如果找到了,就把这个路径 写到编译选项中。
最终我的解决办法,在CMakeLists.txt添加
# jetson nano 上
if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64")include_directories(/usr/local/cuda/include)# 向工程添加多个特定的库文件搜索路径link_directories(/usr/local/cuda/lib64)
# x86上
elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "x86_64")include_directories(/usr/local/cuda-11.7/include)# 向工程添加多个特定的库文件搜索路径link_directories(/usr/local/cuda-11.7/lib64)
endif()
重新编译,问题解决。
一般 /usr/local/cuda 路径都是一些 /usr/local/cuda-10.2 或者/usr/local/cuda-11.4等不同版本的软链接。