CentOS 7官方源的 GCC 最新版本是 4.8.5,该版本发布于2015年,年代久远且不支持高版本的 C++ 编译了,因此有必要安装高版本的 GCC。
红帽(RedHat)中拥有多个已经编译好了的高版本 GCC,但未更新到 base 和 epel 这两个常用源中,而是将这些版本放在 scl 中。因此我们想要安装高版本的 GCC,解决办法有两种:手动编译(也可以从其他机器拷贝或者网上下载),或从源安装。
为了方便,这里介绍从『源安装』的操作步骤。
从源升级GCC/G++
- 查看本机的 host 信息
hostnamectl
- 查看红帽(RedHat)的版本信息
cat /etc/redhat-release
- 由于红帽将已编译好的高版本 GCC 放在了
scl
,因此需要安装scl
yum install -y centos-release-scl
- 列出已有的源
yum repolist
- 列出 GCC 所有可安装的版本
yum list | grep devtoolset | grep gcc.x86_64
注意:这些软件包有一个好处是:它们可以同时安装,且不会相互覆盖和冲突,也不会覆盖原系统的版本,想要使用哪个版本就可以启动哪个版本,启动命令下面会讲到。
- 安装更高版本的GCC/G++(可选择一个安装,或者都安装)
# GCC 9
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++
# GCC 10
yum -y install devtoolset-10-gcc devtoolset-10-gcc-c++
- 切换gcc指令为新版本的GCC
# 将 x 改为想要启用的 GCC 版本,例如 x=10
scl enable devtoolset-x bash
注意:这条指令的执行只能在当前终端生效,下一次打开终端必须重新执行这条指令。因此,方便起见,我们将其加入到
~/.bashrc
配置文件中,使其打开终端默认执行该指令。