当前位置: 首页 > news >正文

【跳坑日记】Jetson 6.2 编译cuda-sample报错:No CMAKE_CUDA_COMPILER could be found

前情提要

在刷完 JetPack 6.2 之后,想要验证CUDA是否可以正常使用,本文采用NVIDIA官方cuda-sample项目来验证效果,结果运行时报出No CMAKE_CUDA_COMPILER could be found错误,本文主要着手解决该报错问题。

按照惯例,首先说明报错时运行环境以及对应版本。

环境版本
JetPack6.2
CUDA12.6
CMake3.22.1
硬件设备Jetson AGX Orin 64GB、Jetson Orin NX 16GB

报错过程

首先,英伟达边缘端开发板刷完JetPack 6.2之后,会自带CUDA 12.6 版本(如下图)。

图1:JetPack 6.2 刷机时 CUDA版本截图

若要编译cuda-sample,需要做两件事情,首先在官方github【https://github.com/NVIDIA/cuda-samples】下载源码,用管理员权限拷贝到cuda目录,系统默认地址为【/usr/local/cuda/】或者【/usr/local/cuda-12/】和【/usr/local/cuda-12.6/】都可以,因为前面两个地址都是软连接,指向第三个目录。当然,应该不用拷贝也没事,以上纯属个人习惯以及原来官方默认预设路径。

然后,通过apt安装cmake,我这里以2025年4月14日为截止日期,直接在控制台输入sudo apt install cmake作为编译CUDA样例的版本(即:3.22.1)

此时,万事俱备,可以对示例进行编译。进入cuda-sample目录(我这里要编译deviceQuery,列出设备信息,所以进入【/usr/local/cuda/cuda-samples/Samples/1_Utilities/deviceQuery】目录),命令行输入sudo cmake .,此时,报出如下图错误,也就是如题所示内容。

图2:编译CUDA示例程序报错截图

解决过程

网上搜了挺多资料,有说设置环境变量的,改了当前用户的和系统环境变量(大体思路是指定PATH到cuda的bin目录),无济于事、后来搜到参考链接1的帖子,硕士要设置CUDA值,一开始没明白,一般set的目的就是设置环境变量,后来明白了,其实意思是在当前目录【/usr/local/cuda/cuda-samples/Samples/1_Utilities/deviceQuery】下的CMakeList.txt文件中加入下面这句话。好吧,原谅我对CMake的生疏。确实,我把这句话加到第一行,然后执行就可以正常编译和执行了。

set(CMAKE_CUDA_COMPILER /usr/local/cuda/bin/nvcc)

完整的CMakeLists.txt文件内容如下:

set(CMAKE_CUDA_COMPILER /usr/local/cuda/bin/nvcc)cmake_minimum_required(VERSION 3.20)list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../../cmake/Modules")project(deviceQuery LANGUAGES C CXX CUDA)find_package(CUDAToolkit REQUIRED)set(CMAKE_POSITION_INDEPENDENT_CODE ON)set(CMAKE_CUDA_ARCHITECTURES 50 52 60 61 70 72 75 80 86 87 89 90 100 101 120)
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Wno-deprecated-gpu-targets")
if(CMAKE_BUILD_TYPE STREQUAL "Debug")# set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -G")  # enable cuda-gdb (expensive)
endif()# Include directories and libraries
include_directories(../../../Common)# Source file
# Add target for deviceQuery
add_executable(deviceQuery deviceQuery.cpp)target_compile_options(deviceQuery PRIVATE $<$<COMPILE_LANGUAGE:CUDA>:--extended-lambda>)target_compile_features(deviceQuery PRIVATE cxx_std_17 cuda_std_17)set_target_properties(deviceQuery PROPERTIES CUDA_SEPARABLE_COMPILATION ON)target_include_directories(deviceQuery PRIVATE${CUDAToolkit_INCLUDE_DIRS}
)target_link_libraries(deviceQuery PUBLICCUDA::cudart
)

最终,执行完sudo cmake .sudo make命令后,我看到了久违的可执行文件【deviceQuery】,然后执行./deviceQuery之后就如愿看到了下图的内容。

图3:查询设备详细信息命令执行结果截图

感谢大神分享。

参考链接

  1. Jetson Orin AGX上的CUDA开发报错:No CMAKE_CUDA_COMPILER could be found.

相关文章:

  • java android持久化数据
  • c#内存泄露的原因和解决办法
  • 全新电脑如何快速安装nvm,npm,pnpm
  • 批量将文件夹名称、文件夹路径提取到 Excel 清单
  • git在IDEA中使用技巧
  • RabbitMQ消息的可靠性
  • 腾讯云golang一面
  • Project ERROR: liblightdm-qt5-3 development package not found问题的解决方法
  • 基于 Python 和 OpenCV 技术的疲劳驾驶检测系统(2.0 全新升级,附源码)
  • 双向链表中间插入节点,删除节点
  • Trae CN 使用入门指南
  • 【uniapp-兼容性处理】swiper在iOS上偶发出现后几张图片白屏情况
  • Vue使用axios实现:上传文件、下载文件
  • .NET Core DI(依赖注入)的生命周期及应用场景
  • React 更新state中的对象
  • Doris 中 Compaction 问题的深度剖析与解决方案
  • linux编译adbd工具使用
  • Python + Playwright:规避常见的UI自动化测试反模式
  • Spark-SQL核心编程
  • 基于PyQt5和OpenCV的传统图像分割应用UI程序
  • 重庆大学通报本科生发14篇SCI论文处理结果
  • 广西钦州:坚决拥护自治区党委对钟恒钦进行审查调查的决定
  • 胳膊一抬就疼,炒菜都成问题?警惕这种“炎症”找上门
  • 云南临沧一行贿案金额认定比受贿案多41万,重审时检方变更金额起诉
  • 上任后首访,德国总理与法国总统举行会晤
  • 马上评|不再提“智驾”,新能源车企回归理性