centos7系统自带的是gcc 4.8.5的,对c++11支持还算比较好。目前,c++14、c++17的标准都已出台,c++20还会远吗?
为了更好的学习和工作,说白了就是为了尝鲜,老广干什么事情都是要尝鲜的,所以身在广东的我,也准备尝尝鲜,把centos7的gcc升级到gcc最新版本,目前最新的版本是gcc8.2(详见:https://gcc.gnu.org/)
接下来升级,
有些软件的安装升级可以从编译好的二进制包升级,免去了构建的痛苦,但gcc必须从源码升级,必须经历编译的痛苦。
具体升级步骤如下:
(建议至少要有12GB以上的空闲空间)
我习惯使用git,所以早已在centos安装了git,gcc的gitURL:https://github.com/gcc-mirror/gcc,在浏览器打开这个网址后,不要急于下载,先选择gcc的版本,如下图所示:
最后找到gcc 8.2,点击"gcc-8_2_0-release"完成Tags的切换
进入自己的home目录执行如下命令:
git clone --branch gcc-8_2_0-release https://github.com/gcc-mirror/gcc.git
下载时间视网速而定,源码大概有3.3GB的样子,所以慢慢等。下载完成后进入第二步。
由于最近被限速了,所以建议大家下载压缩包(http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-8.2.0/)
以前升级gcc非常麻烦,因为gcc依赖了mpfr、gmp、mpc 和isl共四个库,下载也麻烦 ,现在简单了。
在gcc目录,执行:./contrib/download_prerequisites
此命令会自动把gcc需要的这几个依赖库下载完成
在gcc目录,执行配置命令:./configure --prefix=/usr --enable-multilib
如果只需要支持c,c++编译器,则执行配置命令:./configure --prefix=/usr --enable-multilib --enable-languages=c,c++
可能会报错:configure: error: I suspect your system does not have 32-bit development libraries (libc and headers). If you have them, rerun configure with --enable-multilib. If you do not have them, and want to build a 64-bit-only compiler, rerun configure with --disable-multilib.(意思是说:没有找到32位的开发库,如果不想编译支持多平台的gcc,可以使用--disable-multilib重新配置),大咖怎么能不支持多平台的编译呢?所以安装32位的开发库吧,使用如下命令:
sudo yum install libgcc.i686
sudo yum install glibc-devel.i686
安装完成后,再次执行命令:./configure --prefix=/usr --enable-multilib
应该不会报错了,且会生成Makefile,然后编译:
make #建议使用单任务make,不要使用多任务,多任务有可能会编译报错。
经过漫漫漫漫长的等待,终于make完成了,然后执行:
sudo make install 安装完成的最后信息截图如下:
最后使用gcc --version 查看gcc的版本: