CentOS 7.x 升级 gcc 版本

4/25/2021 CentOSgcc

CentOS 7.x 默认 gcc 版本为 4.8.5,在安装编译最新稳定版的 Node.js 时,会报错,提示我们需要更高版本的 C++ 环境支持。

C++ compiler (CXX=g++, 4.8.5) too old, need g++ 6.3.0 or clang++ 8.0.0

网上很多教程的升级方法都是下载源码编译,过程繁琐,耗时长。在此记录一下简单的升级方式。

# 安装 centos-release-scl 软件集

关于该软件集的详细信息道友们可以自行查阅。

sudo yum -y install centos-release-scl

# 安装 devtoolset-8-gcc

注意,如果想安装其他版本,把数字 8 改成对应的版本号即可。

sudo yum -y install devtoolset-8-gcc*

# 临时激活版本

可以一次性安装多个版本的 gcc,用以下命令进行切换激活。

注意,该方法只是临时切换,系统重启后,系统版本会恢复为 4.8.5。

scl enable devtoolset-8 bash

# or

source /opt/rh/devtoolset-8/enable

激活完成就可以通过 gcc -v 查看版本了,例如,我的版本信息打印如下:

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,lto --prefix=/opt/rh/devtoolset-8/root/usr --mandir=/opt/rh/devtoolset-8/root/usr/share/man --infodir=/opt/rh/devtoolset-8/root/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --with-default-libstdcxx-abi=gcc4-compatible --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-8.3.1-20190311/obj-x86_64-redhat-linux/isl-install --disable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 8.3.1 20190311 (Red Hat 8.3.1-3) (GCC)

# 直接替换旧的 gcc

可避免每次重启都需要激活。

mv /usr/bin/gcc /usr/bin/gcc-4.8.5 && \
ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc && \
mv /usr/bin/g++ /usr/bin/g++-4.8.5 && \
ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++