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

【机器学习】基于conda虚拟环境的gcc、g++版本升级

最近在学习大模型部署,需要安装flash-attn,在编译时报错

c++: error: unrecognized command line option ‘-std=c++17’

centos7.9默认gcc最高版本为4.8.5

(base) [root@xx ~]# cat /proc/version
Linux version 3.10.0-1160.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Mon Oct 19 16:18:59 UTC 2020

以上报错需要高版本的gcc支持,所以需要升级GCC的版本,对应关系参考
GCC版本对C++的支持情况
这里选择9.0版本进行升级。
网上搜索教程,多是 基于centos yun 安装替换方式,比较复杂,该文章基于conda虚拟环境来进行升级,操作简单,对原系统侵入少。

激活conda环境

conda是python的解释器环境,可以隔离不同的python解释环境,可以自动拉取环境所需的包,屏蔽了虚拟机底层的差异,避免了频繁的更换安装python解释器

所以我们选择在conda环境升级gcc、g++版本,来支撑这个环境下的编译工作。

#激活环境
conda activate ktransformers
#查看gcc可安装的版本
conda search gcc
# 查看g++可安装版本
conda search gxx

在这里插入图片描述
在这里插入图片描述

可以看到版本很多,这里选择gcc-linux-64=9.3.0,gxx-linux-64=9.3.0版本

安装gcc 、g++

# 安装gcc
conda install gcc_linux-64=9.3.0
# 安装gxx
conda install gxx_linux-64=9.3.0

会被安装到这个路径(你自己conda虚拟环境的目录,这里是ktransformers)

environment location: /home/xxx//envs/ktransformers

# 查看安装版本(conda下安装的gcc不叫gcc了,叫x86_64-conda-linux-gnu-cc)
x86_64-conda-linux-gnu-cc -v
# 查看gxx安装版本
x86_64-conda-linux-gnu-c++ -v
(ktransformers) [root@yd-ss ~]# x86_64-conda-linux-gnu-cc -v
Reading specs from /home/xxx//envs/ktransformers/bin/../lib/gcc/x86_64-conda-linux-gnu/9.3.0/specs
COLLECT_GCC=x86_64-conda-linux-gnu-cc
COLLECT_LTO_WRAPPER=/home/xxx//envs/ktransformers/bin/../libexec/gcc/x86_64-conda-linux-gnu/9.3.0/lto-wrapper
Target: x86_64-conda-linux-gnu
Configured with: /home/builder/ktietz/cos6/ci_cos6/ctng-compilers_1622658800915/work/.build/x86_64-conda-linux-gnu/src/gcc/configure --build=x86_64-build_pc-linux-gnu --host=x86_64-build_pc-linux-gnu --target=x86_64-conda-linux-gnu --prefix=/home/builder/ktietz/cos6/ci_cos6/ctng-compilers_1622658800915/work/gcc_built --with-sysroot=/home/builder/ktietz/cos6/ci_cos6/ctng-compilers_1622658800915/work/gcc_built/x86_64-conda-linux-gnu/sysroot --enable-languages=c,c++,fortran,objc,obj-c++ --with-pkgversion='crosstool-NG 1.24.0.133_b0863d8_dirty' --enable-__cxa_atexit --disable-libmudflap --enable-libgomp --disable-libssp --enable-libquadmath --enable-libquadmath-support --enable-libsanitizer --enable-libmpx --with-gmp=/home/builder/ktietz/cos6/ci_cos6/ctng-compilers_1622658800915/work/.build/x86_64-conda-linux-gnu/buildtools --with-mpfr=/home/builder/ktietz/cos6/ci_cos6/ctng-compilers_1622658800915/work/.build/x86_64-conda-linux-gnu/buildtools --with-mpc=/home/builder/ktietz/cos6/ci_cos6/ctng-compilers_1622658800915/work/.build/x86_64-conda-linux-gnu/buildtools --with-isl=/home/builder/ktietz/cos6/ci_cos6/ctng-compilers_1622658800915/work/.build/x86_64-conda-linux-gnu/buildtools --enable-lto --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --enable-threads=posix --enable-target-optspace --enable-plugin --enable-gold --disable-nls --disable-multilib --with-local-prefix=/home/builder/ktietz/cos6/ci_cos6/ctng-compilers_1622658800915/work/gcc_built/x86_64-conda-linux-gnu/sysroot --enable-long-long --enable-default-pie
Thread model: posix
gcc version 9.3.0 (crosstool-NG 1.24.0.133_b0863d8_dirty)
/envs/ktransformers/bin(ktransformers) [root@yd-ss bin]# x86_64-conda-linux-gnu-c++ -v
Reading specs from /home/xxx//envs/ktransformers/bin/../lib/gcc/x86_64-conda-linux-gnu/9.3.0/specs
COLLECT_GCC=x86_64-conda-linux-gnu-c++
COLLECT_LTO_WRAPPER=/home/xxx//envs/ktransformers/bin/../libexec/gcc/x86_64-conda-linux-gnu/9.3.0/lto-wrapper
Target: x86_64-conda-linux-gnu
Configured with: /home/builder/ktietz/cos6/ci_cos6/ctng-compilers_1622658800915/work/.build/x86_64-conda-linux-gnu/src/gcc/configure --build=x86_64-build_pc-linux-gnu --host=x86_64-build_pc-linux-gnu --target=x86_64-conda-linux-gnu --prefix=/home/builder/ktietz/cos6/ci_cos6/ctng-compilers_1622658800915/work/gcc_built --with-sysroot=/home/builder/ktietz/cos6/ci_cos6/ctng-compilers_1622658800915/work/gcc_built/x86_64-conda-linux-gnu/sysroot --enable-languages=c,c++,fortran,objc,obj-c++ --with-pkgversion='crosstool-NG 1.24.0.133_b0863d8_dirty' --enable-__cxa_atexit --disable-libmudflap --enable-libgomp --disable-libssp --enable-libquadmath --enable-libquadmath-support --enable-libsanitizer --enable-libmpx --with-gmp=/home/builder/ktietz/cos6/ci_cos6/ctng-compilers_1622658800915/work/.build/x86_64-conda-linux-gnu/buildtools --with-mpfr=/home/builder/ktietz/cos6/ci_cos6/ctng-compilers_1622658800915/work/.build/x86_64-conda-linux-gnu/buildtools --with-mpc=/home/builder/ktietz/cos6/ci_cos6/ctng-compilers_1622658800915/work/.build/x86_64-conda-linux-gnu/buildtools --with-isl=/home/builder/ktietz/cos6/ci_cos6/ctng-compilers_1622658800915/work/.build/x86_64-conda-linux-gnu/buildtools --enable-lto --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --enable-threads=posix --enable-target-optspace --enable-plugin --enable-gold --disable-nls --disable-multilib --with-local-prefix=/home/builder/ktietz/cos6/ci_cos6/ctng-compilers_1622658800915/work/gcc_built/x86_64-conda-linux-gnu/sysroot --enable-long-long --enable-default-pie
Thread model: posix
gcc version 9.3.0 (crosstool-NG 1.24.0.133_b0863d8_dirty)

可以看到已安装成功。

但是这名字系统是无法识别的,所以需要建立软连接,进行改名

# 进入ktransformers虚拟环境目录下 /home/xxx//envs/ktransformers/bin
ln -s ./x86_64-conda-linux-gnu-cc ./gcc
ln -s ./x86_64-conda-linux-gnu-c++ ./g++

再次测试版本,在/home/xxx//envs/ktransformers/bin目录下

./gcc -v
./g++ -v

发现已变成9.3.0

但是仅仅在目录下才能生效,在其他地方读的还是旧的版本,需要配置该新版本的环境变量,路径即指向,conda虚拟环境中安装的这个版本

# conda 环境的gcc 9.3.0 g++ 9.3.0
export PATH=/home/xxx//envs/ktransformers/bin/:$PATH
# 生效
source /etc/profile

再次查看版本,发现成功变成了9.3.0.这就是conda的神奇方便之处。

如果后续需要把gcc版本改回去,就直接去掉环境变量配置即可。

若想更换其他版本的gcc,按以上步骤操作即可。


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

相关文章:

  • 桌子(table、desk)以及其他常见物体的urdf模型,用于搭建机器人环境如pybullet、Gazebo
  • Vue下载与安装步骤
  • PCIe(Peripheral Component Interconnect Express)详解
  • Feign 调用接口跟调用本地方法一样,这个是怎么实现的?
  • 集成电路制造中LIMS系统的应用 内检LIMS在集成电路的作用
  • 运动焦虑锻炼贴士
  • 数据结构 -- 二叉树的存储结构
  • keepalived的工作原理和脑裂
  • ubuntu24.04虚拟机系统中挂载rootfs.img到rootfs_dir目录,使用chroot切换根目录到roofs_dir报错
  • 深度解析:通过 AIBrix 多节点部署 DeepSeek-R1 671B 模型
  • 传奇怪物素材 8方向高清怪物 PNG格式 游戏怪物 11组
  • linux 安全 xshell 使用
  • 【2025】基于python+django的实验室管理系统(源码、万字文档、图文修改、调试答疑)
  • AI爬虫 :Firecrawl的安装和详细使用案例(将整个网站转化为LLM适用的markdown或结构化数据)
  • AI智能土地利用变化分析系统
  • <video>标签的controlsList属性,它能实现哪些功能?
  • 简单记一些Kalibr在20.04安装下踩的坑
  • Matlab 汽车二自由度转弯模型
  • React类的生命周期
  • 在鸿蒙Next中开发一个月历组件