欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > 【机器学习】基于conda虚拟环境的gcc、g++版本升级

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

2025/3/19 17:06:52 来源:https://blog.csdn.net/hubuwch/article/details/146336667  浏览:    关键词:【机器学习】基于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,按以上步骤操作即可。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词