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)