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

【CMake编译报错小复盘】CMAKE_CUDA_ARCHITECTURES,CMake version,GCC version问题

今天在写大模型量化推理框架时遇到了一些编译上的错误,简单复盘一下问题和解决方案:

问题1:CMAKE_CUDA_ARCHITECTURES

报错信息:
CMake Error: CMAKE_CUDA_ARCHITECTURES must be non-empty if set

在这里插入图片描述

cmake和cuda相关的报错通常都很“调虎离山”。
当出现这个报错时,本质问题并不是没有指定所谓的cuda architecture参数,而是找不到nvcc路径。

那么解决方案就是在环境变量中添加nvcc的路径:

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

然后source ~/.bashrc保存修改的内容,然后用如下命令检查一下是否生效:

在这里插入图片描述

参考资料:
CMake Error: CMAKE_CUDA_ARCHITECTURES must be non-empty if set

问题2:CMake版本过低

服务器上CMake版本过低:
在这里插入图片描述

这个好处理,直接用pip安装新版的cmake即可:

pip install cmake

问题3:GCC版本过低

服务器上默认的gcc版本非常低:

在这里插入图片描述

这个问题比较棘手,需要手动下载新版的gcc,然后激活新版的gcc以替换旧版本。比如现在服务器上下载好了多个版本的gcc:

在这里插入图片描述

我进入到11版本的文件夹中,然后执行如下命令激活:

source enable 

于是,查看当前的gcc的版本:

在这里插入图片描述

但是并没有这么顺利,我发现在编译时仍然会报错gcc版本过低。下面是我猜测的原因,我将gcc的路径打印(whereis gcc)出来,发现有多个路径,也许系统默认选择了第一个路径,也就是老版本。

在这里插入图片描述

于是我尝试在CMakeLists.txt的开头加上如下代码,作用是手动指定gcc的路径:

set(CMAKE_CXX_COMPILER /opt/rh/devtoolset-11/root/usr/bin/gcc)

然后编译了一次好像没生效,然后我再编译了一次,发现编译成功!


http://www.kler.cn/a/299354.html

相关文章:

  • vscode 高效率开发手册
  • Python知识点:使用Python进行PDF文档处理
  • FFmpeg的安装教程
  • 第二十一章 加密 SOAP 主体 - 变体:使用可识别证书的信息
  • 第二部分:Web3的核心技术 4. 智能合约
  • 一款支持同一个屏幕界面同时播放多个视频的视频播放软件
  • 【前端项目发布线上环境页面刷新报404】
  • 博物馆如何实现3D交互控制展示?
  • 智能厕所系统高科技打造公厕新生态丨深圳讯鹏科技
  • 宝洁八大问|STAR回答|面试经验|秋招面经
  • 探索Go语言中的函数:构建可重用代码的基石
  • 以太坊开发环境
  • 基于FPGA与RK3588的多通道低延时3G-SDI视频信号
  • 图论篇--代码随想录算法训练营第五十三天打卡| 110. 字符串接龙,105.有向图的完全可达性,106. 岛屿的周长
  • 第三部分:4---进程地址空间
  • 小程序页面整体执行顺序
  • c++类里的静态成员,类外初始化
  • mysql整体架构描述
  • Go语言变量的声明
  • 同城上门服务预约小程序搭建,类似东郊到家系统