Redhat7上安装Red Hat Developer Toolset并自由切换gcc和g++的版本
- 一、Red Hat Developer Toolset 概述
- 二、使用Red Hat Software Collections
- 2.1 获取pool ID
- 2.2 将pool ID 附加到本地系统中
- 2.3 获取仓库列表
- 2.4 使能上述仓库
- 三、安装 Red Hat Developer Toolset
- 四、升级Red Hat Developer Toolset
- 五、切换gcc或者g++版本
一、Red Hat Developer Toolset 概述
本文环境是RHEL 7.6, 演示了如何在7.6的版本上安装Red Hat Developer Toolset。
在Redhat中,提供了专门的工具包来管理gcc版本,通过使用工具包的方式,就可以随时切换gcc版本,而不破坏原有的gcc环境。例如:
gcc-toolset-12对应gcc12.x.x版本
gcc-toolset-11对应gcc11.x.x版本
gcc-toolset-10对应gcc10.x.x版本
gcc-toolset-9对应gcc9.x.x版本
以此类推
关于Red Hat Developer Toolset的说明:
Red Hat Developer Toolset delivers the latest stable versions of essential GCC C, C++, Fortran, and supporting development tools to enhance developer productivity and improve deployment times.
Red Hat Developer Toolset是作为Red Hat Software Collections的一部分提供的。
想要使用Red Hat Developer Toolset,还必须通过Redhat的订阅管理系统。如何通过Red Hat Subscription Management注册你的系统,可以参考下面这个guide。
Red Hat Subscription Management
关于如何注册成为Redhat的开发者,参考我的另一篇博文, 里面有一节对此有介绍:
Redhat rpm常用命令以及如何配置yum软件仓库使用yum install
二、使用Red Hat Software Collections
2.1 获取pool ID
执行以下命令,以获取你的订阅系统所拥有的pool ID
[root@192 rh]# subscription-manager list --available
2.2 将pool ID 附加到本地系统中
将上一步获取的pool ID,通过以下命令附加到本地系统
subscription-manager attach --pool=xxxxx
可以随时通过以下命令查看你本地已经附加成功的订阅清单:
subscription-manager list --consumed
2.3 获取仓库列表
通过以下命令获取可用的yum仓库列表:
[root@192 ~]# subscription-manager repos --list
这个命令会列出/etc/yum.repos.d/redhat.repo中全部的Available Repositories,有一大堆, 不过我们不用理会,只需要关心如下固定格式的即可:
rhel-variant-rhscl-version-rpms
rhel-variant-rhscl-version-debug-rpms
rhel-variant-rhscl-version-source-rpms
rhel-version-variant-optional-rpms
rhel-version-variant-optional-debug-rpms
rhel-version-variant-optional-source-rpms
由于我的系统是RHEL7.6, 所以将version替换成(7),将variant替换成(server or workstation), 我这里是server,替换好后变成:
rhel-server-rhscl-7-rpms
rhel-server-rhscl-7-debug-rpms
rhel-server-rhscl-7-source-rpms
rhel-7-server-optional-rpms
rhel-7-server-optional-debug-rpms
rhel-7-server-optional-source-rpms
这几条记录在刚刚输出的一堆结果中都是唯一存在的。
2.4 使能上述仓库
通过下述命令将上述步骤中的repository仓库逐一使能。
subscription-manager repos --enable repository
其中的repository分别替换成上面那6个结果。也就是:
subscription-manager repos --enable rhel-server-rhscl-7-rpms
subscription-manager repos --enable rhel-server-rhscl-7-debug-rpms
subscription-manager repos --enable rhel-server-rhscl-7-source-rpms
subscription-manager repos --enable rhel-7-server-optional-rpms
subscription-manager repos --enable rhel-7-server-optional-debug-rpms
subscription-manager repos --enable rhel-7-server-optional-source-rpms
至此,准备工作结束。
三、安装 Red Hat Developer Toolset
通过以下命令可以一次性安装全部的devtoolset-12 package:
yum install devtoolset-12
当然了,你也可以安装指定的package,比如:
yum install devtoolset-12-toolchain
这里我们安装完整的devtoolset-12,完成安装后/opt/rh/目录下会有对应的devtoolset-12目录
四、升级Red Hat Developer Toolset
使用以下命令进行升级:
yum update
五、切换gcc或者g++版本
可以按照下述格式指定gcc版本进行编译,这里指定的是devtoolset-12,对应gcc12版本:
scl enable devtoolset-12 'gcc -o output_file source_file...'
也可以直接执行以下命令,将当前的shell session设置为指定的devtoolset-12版本,那么当前会话中就可以一直使用该版本。
scl enable devtoolset-12 'bash'
对于g++,也是同理
如果想长期使用高版本gcc的话,可以将其写入环境变量
echo "source /opt/rh/devtoolset-12/enable" >>/etc/profile
source /etc/profile