在CentOS8、RHEL8系统中,默认gcc版本已经是8.x.x版本,但是在一些编译场景中,还是需要高版本的gcc。
之前吴昊也写过CentOS 7完美升级gcc版本方法:https://blog.whsir.com/post-4975.html,但是之前的文章不适用8.x的版本,吴昊也强调过,不要去编译升级gcc,编译升级后可能会给你带来额外的麻烦。
本文基于CentOS8.3版本验证通过,理论适用于所有RHEL8.x的衍生版本!
在CentOS8版本中,红帽也提供了开发工具包管理gcc版本,install的包名从devtoolset-x变成了gcc-toolset-x,通过该方式升级gcc好处就是随时可以切换gcc版本,不破坏原有gcc环境。
截至2023年12月,gcc-toolset支持gcc9、gcc10、gcc11、gcc12、gcc13版本
gcc-toolset-9对应gcc9.x.x版本 gcc-toolset-10对应gcc10.x.x版本 gcc-toolset-11对应gcc11.x.x版本 gcc-toolset-12对应gcc12.x.x版本 gcc-toolset-13对应gcc13.x.x版本
|-----------|-------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 | gcc-toolset-9对应gcc9.x.x版本 gcc-toolset-10对应gcc10.x.x版本 gcc-toolset-11对应gcc11.x.x版本 gcc-toolset-12对应gcc12.x.x版本 gcc-toolset-13对应gcc13.x.x版本 |
切换gcc至10.x.x版本
配置yum源,非必须,默认的yum源也可,我这里就基于系统的默认源
安装gcc-toolset-10
dnf install gcc-toolset-10
|---|----------------------------| | 1 | dnf install gcc-toolset-10 |
激活gcc版本,使其生效
scl enable gcc-toolset-10 bash
|---|--------------------------------| | 1 | scl enable gcc-toolset-10 bash |
或
source /opt/rh/gcc-toolset-10/enable
|---|--------------------------------------| | 1 | source /opt/rh/gcc-toolset-10/enable |
此时通过gcc --version命令可以看到,gcc版本已经变成10.x.x,值得注意的是这仅仅在当前bash生效,如果需要永久生效,可以请自行添加环境变量。
其它gcc-toolset-12、gcc-toolset-13版本同理,这样的好处是,在当前系统编译环境可能会用到gcc的高版本,并不改变系统原有环境。