CentOS7升级GCC版本至9.3
1 前言
2 开始
2.1 下载GCC69.3.0源码并解压
2.2 安装gcc所需依赖项
2.3 编译gcc源码
2.4 编译生成makefile文件,并安装
2.5 设置环境变量
2.6 设置头文件
2.7 设置库文件
2.8 加载动态连接库
2.9 安装并配置完成,测试一下版本号

1 前言

前段时间618腾讯云搞活动,买了台1H2G的CVM,拿来搭建个自己之前写的项目练练手,装Redis的时候出现了一些问题,百度一查发现是CentOS自带的GCC版本太低,导致Redis编译失败。于是我四处寻找解决办法,终于搞定了。这里我整理一下升级的过程,希望能帮到有需要的人。

2 开始

先执行yum -y install gcc-c++,安装gcc-c++编译环境,要不然后面make gcc 9.3.0会报错

2.1 下载GCC69.3.0源码并解压

点这 gcc-9.3.0.tar.gz 下载gcc9.3的源码包,也可以使用wget命令下载。将下载好的源码包放在/usr/lcoal/src目录下,然后解压tar -zxvf gcc-9.3.0.tar.gz

https://ftp.gnu.org/gnu/gcc/gcc-9.3.0/gcc-9.3.0.tar.gz

2.2 安装gcc所需依赖项

执行这条命令,获取安装gcc所需要的依赖项 ./contrib/download_prerequisites,当然你也可以在这里找到gmp mpfr mpc这几个包,下载后解压放入gcc根目录下

2.3 编译gcc源码

在gcc根目录下创建编译目录build(随便叫啥都行),执行以下命令
cd gcc-9.3.0 && mkdir build && cd build
创建好以后执行以下命令,开始编译gcc

…/configure --prefix=/usr/local/gcc-9.3.0 --enable-bootstrap --enable-checking=release --enable-languages=c,c++ --disable-multilib

这里解释下各参数代表的意思

–-enable-languages表示你要让你的gcc支持哪些编程语言

-–disable-multilib表示编译器不编译成其他平台的可执行代码;

-–disable-checking表示生成的编译器在编译过程中不做额外检查

–-enable-checking=xxx 表示编译过程中增加XXX检查

–prefix=/usr/local/gcc-9.3.0 指定安装路径

–enable-bootstrap 表示用第一次编译生成的程序进行第二次编译,然后用再次生成的程序进行第三次编译,并且检查比较第二次和第三次结果的正确性,也就是进行冗余的编译检查工作。 非交叉编译环境下,默认已经将该值设为 enable,可以不用显示指定;交叉编译环境下,需要显示将其值设为 disable。

2.4 编译生成makefile文件,并安装

make && make install

注:
据说 make -j处理器核心数可以设置所有CPU多线程编译(下次试试),不加是默认的比较慢,彼此编译用了2.5小时
即
make -j96 && make install

安装大约2小时左右,慢慢等吧…

安装后的环境配置

2.5 设置环境变量

touch /etc/profile.d/gcc.sh
sudo chmod 777 /etc/profile.d/gcc.sh
sudo echo -e ‘\nexport PATH=/usr/local/gcc-9.3.0/bin:$PATH\n’ >> /etc/profile.d/gcc.sh && source /etc/profile.d/gcc.sh

2.6 设置头文件

sudo ln -sv /usr/local/gcc/include/ /usr/include/gcc

2.7 设置库文件

touch /etc/ld.so.conf.d/gcc.confsudo chmod 777 /etc/ld.so.conf.d/gcc.conf
sudo echo -e “/usr/local/gcc/lib64” >> /etc/ld.so.conf.d/gcc.conf

2.8 加载动态连接库

sudo ldconfig -v
ldconfig -p |grep gcc

2.9 安装并配置完成,测试一下版本号

输入 gcc -v显示以下信息说明已成功安装GCC9.3.0

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc-9.3.0/libexec/gcc/x86_64-pc-linux
-gnu/9.3.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: …/configure --prefix=/usr/local/gcc-9.3.0 --enable
-bootstrap --enable-checking=release --enable-languages=c,c++ --disa
ble-multilib
Thread model: posix
gcc version 9.3.0 (GCC)