CentOS 管理多版本gcc —— 筑梦之路

在CentOS系统中,可以通过devtoolset或gcc-toolset管理GCC版本。文章介绍了如何为CentOS 7和8配置YUM源,安装及激活不同版本的GCC,包括devtoolset-8到devtoolset-10以及gcc-toolset-9到gcc-toolset-11。这种方法允许在不破坏原有环境的情况下切换GCC版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

红帽官方:Product Documentation for Red Hat Developer Toolset 8 | Red Hat Customer Portal

centos 7 

devtoolset对应gcc的版本

 devtoolset-3对应gcc4.x.x版本
devtoolset-4对应gcc5.x.x版本
devtoolset-6对应gcc6.x.x版本
devtoolset-7对应gcc7.x.x版本
devtoolset-8对应gcc8.x.x版本
devtoolset-9对应gcc9.x.x版本
devtoolset-10对应gcc10.x.x版本

yum install centos-release-scl
yum install devtoolset-8

# 添加yum源

vi /etc/yum.repos.d/CentOS-SCLo-scl.repo
[centos-sclo-sclo]
name=CentOS-7 - SCLo sclo
baseurl=http://mirror.centos.org/centos/7/sclo/$basearch/rh/
#mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-sclo
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

# 激活版本

scl enable devtoolset-8 bash
或
source /opt/rh/devtoolset-8/enable

此时通过gcc --version命令可以看到,gcc版本已经变成8.x.x,值得注意的是这仅仅在当前bash生效,如果需要永久生效,可以请自行添加环境变量

centos 8

在CentOS8系统中,默认gcc版本已经是8.x.x版本,但是在一些场景中,还是需要高版本的gcc。

注意:不要去编译升级gcc,编译升级后可能会给你带来额外的麻烦。本文基于CentOS8.3版本验证通过,仅适用于CentOS8、Redhat8版本。

在CentOS8版本中,红帽也提供了开发工具包管理gcc版本,install的包名从devtoolset-x变成了gcc-toolset-x,通过该方式升级gcc好处就是随时可以切换gcc版本,不破坏原有gcc环境。

gcc-toolset-9对应gcc9.x.x版本
gcc-toolset-10对应gcc10.x.x版本
gcc-toolset-11对应gcc11.x.x版本

# 配置yum源

vim /etc/yum.repos.d/Centos-8.repo
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
 
 
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
 
 
[AppStream]
name=CentOS-$releasever - AppStream - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/AppStream/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
 
 
[8-AppStream]
name=CentOS-$releasever - 8-AppStream
baseurl=http://mirrors.aliyun.com/centos/8-stream/AppStream/$basearch/os/
gpgcheck=0
enabled=1
# 安装

dnf install gcc-toolset-10

# 激活版本

scl enable gcc-toolset-10 bash
或
source /opt/rh/gcc-toolset-10/enable

此时通过gcc --version命令可以看到,gcc版本已经变成10.x.x,值得注意的是这仅仅在当前bash生效,如果需要永久生效,可以请自行添加环境变量

### 安装和管理多个版本的 GCC 编译器 为了在 CentOS 7 上安装和管理多个版本的 GCC 编译器,可以采用多种方法来实现这一目标。以下是几种常见的方式: #### 方法一:通过软件集合(Software Collections) Software Collections 提供了一种安全的方法,在不影响系统默认工具链的情况下安装额外的应用程序及其依赖项。 - **启用 SCL 存储库** ```bash sudo yum install centos-release-scl ``` - **安装特定版本的 GCC** 例如,要安装 GCC 8 版本: ```bash sudo yum install devtoolset-8-gcc devtoolset-8-gcc-c++ ``` 这会将 GCC 8 添加到系统的环境中,而不会覆盖现有的默认编译器版本[^1]。 - **激活特定版本的 GCC** 每次想要使用已安装的不同版本的 GCC 时,可以通过命令行临时加载它: ```bash scl enable devtoolset-8 bash ``` 此操作将在新的 shell 中启动,并设置环境变量以便于访问所选版本的 GCC 工具集。 #### 方法二:源码编译安装自定义路径下的 GCC 如果需要更灵活地控制安装位置以及配置选项,则可以选择从源代码构建并安装不同版本的 GCC 到不同的目录下。 - **准备必要的开发工具** 确保已经安装了基础的构建工具和其他必需组件: ```bash sudo yum groupinstall "Development Tools" sudo yum install gmp-devel mpfr-devel libmpc-devel ``` - **下载所需版本的 GCC 源码包** 可以从官方 GNU FTP 站点获取所需的 GCC 发布版本压缩文件。 - **解压并配置** 假设选择了 GCC 9.x 版本作为例子: ```bash tar -xf gcc-9.3.0.tar.gz cd gcc-9.3.0 ./contrib/download_prerequisites mkdir build && cd build ../configure --prefix=/opt/gcc-9.3.0 --enable-languages=c,c++ --disable-multilib make -j$(nproc) sudo make install ``` 上述过程会在 `/opt/gcc-9.3.0` 下创建一个新的 GCC 实例[^2]。 - **切换使用的 GCC 版本** 当希望调用某个具体版本的 GCC 进行编译工作时,可通过更新 `PATH` 或者直接指定全路径的方式来完成: ```bash export PATH=/opt/gcc-9.3.0/bin:$PATH ``` 或者对于单次编译任务来说可以直接指明绝对路径: ```bash /opt/gcc-9.3.0/bin/gcc ... ``` 这种方法允许在同一台机器上共存多个独立版本而不互相干扰。 #### 方法三:利用容器化技术隔离各版本环境 Docker 是一种流行的轻量级虚拟化解决方案,非常适合用来运行具有不同需求的工作负载。通过 Dockerfile 文件定制镜像,可以在其中预置好各种版本的 GCC 和其他相关依赖关系,从而轻松管理和分发这些环境给团队成员或其他开发者社区。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值