0.准备升级环境和源码包

CentOS7软件库中的GCC是4.8.5版本,在编译C语言时,在用到C99规范时需要自己指定以c99的规范编译-std=c99很麻烦。所以考虑升级一下gcc编译器。GCC必须要我们自己编译源码升级。所以需要做好以下准本工作。

1.下载gcc的源码包

https://mirrors.aliyun.com/gnu/gcc/gcc-8.2.0/gcc-8.2.0.tar.gz

这个是阿里的镜像,最新版本是10.1.0,这里下载的是 8.2.0版本。

2.搭建编译环境

yum -y install gcc  
yum -y install gcc-c++ 
yum -y install bzip2

说明一下:如果没有安装bzip2,会在下载依赖库时报如下错误

tar (child): lbzip2: Cannot exec: No such file or directory 
tar (child): Error is not recoverable: exiting now 
tar: Child returned status 2 
tar: Error is not recoverable: exiting now

1.安装

1.1 安装依赖库

gcc依赖了mpfr、gmp、mpc 和is这四个库,现在在gcc的文件中整合了一个shell脚本,我们通过执行脚本文件快速安装依赖。注意:该脚本需要在gcc文件夹内执行。

[root@model gcc-8.0.2]# ./contrib/download_prerequisites
1.2 配置

建立编译输出文件。
配置命令如下

[root@model gcc-8.0.2]# ./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
命令说明:

–enable-languages=c,c++:只需要支持c/c++编译器即可。
–disable-multilib:指不需要支持多平台的gcc,如果是64位就仅安装64位的gcc。也可以选择支持。选择支持的话,你要先安装32位的开发库,命令如下:

sudo yum install libgcc.i686
sudo yum install glibc-devel.i686

如果不是在所期望安装的目录中,还需要加上–prefix=/usr/gcc8.0.2,后面改成自己的目录。

1.3 编译

[root@model gcc-8.0.2]# make
1.4 安装
[root@model gcc-8.0.2]# make install
1.5 配置永久环境变量
[root@model gcc-8.0.2]# vim /etc/profile

配置系统文件 /etc/profile,在末尾添加语句:

export PATH=/usr/gcc8.2.0/bin:$PATH

再执行source命令,使该系统文件立即生效:

[root@model gcc-8.0.2]# source /etc/profile

2.测试

[root@model gcc-8.0.2]# gcc --version
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/gcc8.2.0/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib --prefix=/usr/gcc8.2.0
Thread model: posix
gcc version 8.2.0 (GCC) 
[root@model gcc-8.0.2]# 

结束。。。。

3.清除安装包

升级gcc后,压缩包和安装包可以被清除掉:

[root@model home]# ls
gcc-8.2.0.tar.gz  gcc-8.2.0
[root@model home]# rm -rf gcc-8.2.0*