关于 GCC 在 CentOS 下通过 yum 安装的默认版本号,不同系统之间的差异较大:CentOS 5 为 4.1.2,CentOS 6 为 4.4.7,CentOS 7 为 4.8.3。然而,许多软件在编译安装时对 GCC 版本有较高要求,老旧版本容易报错,迫使开发者必须升级。
那么,如何将 GCC 版本升级至更高版本?
首先需要确定升级的目标版本。目前 GCC 最新版已发布至 5.2,但 CentOS 7 官方仓库仍仅提供 4.8 系列的版本。从兼容性与稳定性出发,将 GCC 升级至 4.8.5 是一个相对稳妥的选择。
GCC 官网:https://gcc.gnu.org
接下来将逐步介绍如何通过源码编译安装 GCC 4.8.5。需要特别注意的是,在开始编译前,系统必须已经通过 yum 安装了旧版本的 GCC 及所需的依赖库。如果在 x86_64 系统下进行编译,还需额外安装 libgcc.i686 和 glibc-devel.i686 这两个包。
yum install -y gcc texinfo-tex flex zip libgcc.i686 glibc-devel.i686
注意: 编译安装 GCC 对硬件有明确要求——内存不得低于 1GB,Swap 分区大小同样不得低于 1GB,硬盘至少需要 10GB 的空闲空间。否则编译过程中极易中途报错并退出。编译完成后,整个 gcc-4.8.5 目录的占用空间会膨胀至 5GB 左右,请提前做好准备。
1. 下载 GCC 源码
wget ftp://ftp.gnu.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.gz
2. 下载必要的依赖包
编译安装 GCC 需要 mpc、mpfr、gmp 这三个依赖包。幸运的是,GCC 源码中已自带了一个脚本,可以一键下载它们,大大简化了操作。
tar zxf gcc-4.8.5.tar.gz
cd gcc-4.8.5
./contrib/download_prerequisites



编译和安装
依赖包搞定后,就可以配置编译选项了。这里推荐指定安装路径,方便后续维护——需要卸载时直接删除目录即可。
cd gcc-4.8.1
./gcc-4.8.1/configure --prefix=/usr/local/gcc-4.8.1 --enable-languages=c,c++
--prefix=/usr/local/gcc-4.8.1 表示将安装目录设定为 /usr/local/gcc-4.8.1;若不指定,可执行文件默认会放在 /usr/local/bin 下,后期管理起来比较杂乱。 --enable-languages 用于指定要安装的语言支持,此处仅安装 C 和 C++。
编译
配置完成后,即可开始编译:
make
该过程大约需要两小时左右,具体取决于机器性能。如果中途报错提示 fatal error: gnu/stubs-32, No such file or directory(如下图),说明缺少 32 位兼容库。

遇到此错误时,先执行下面这条命令,然后重新编译:
yum -y install glibc-devel.i686 --setopt=protected_multilib=false
make
耐心等待 make 执行完毕,接着运行 make install,GCC 4.8.5 即可安装到指定路径下。记得将新版本的 bin 目录加入 PATH 环境变量,以便正常使用。
