https://www.crifan.com/figure_out_which_version_gcc_support_c11/
https://blog.csdn.net/joeblackzqq/article/details/77161575
操作系统是CentOS6.8的32位版本,yum自带的gcc版本为4.4.7,不支持C++11特性。所以需要升级到4.8.5,至少要升级到4.8.1才完全支持C++11。
新系统是没有安装GCC的,而我们没有gcc4.8.5的安装包,只有源码包,地址为:http://ftp.gnu.org/gnu/gcc/
源码包gcc4.8.5不能直接安装,所以我们需要先编译源码再安装。所以我们还是先有一个编译环境。yum提供了gcc4.4.7版本的安装包,所以我们可以先安装GCC4.4.7,这样就有了编译环境,就可以用来编译gcc4.8.5,然后再安装gcc4.8.5。
有人可能会觉得这个麻烦,为什么不能直接安装gcc4.8.5呢?不是不可以,你得有这个版本的安装包才行呀。如果有安装包,就不需要安装gcc4.4.7,也不需要编译gcc4.8.5了,就可以直接安装gcc4.8.5。
说一下我为什么选择4.8.5版本,因为4.8.5是4.8.x最高的版本,按理说是4.8.x版本中最好的一个版本。因为4.8.1刚完全支持C++11,后面的几个小版本肯定是小幅优化或者完善。具体做了什么优化完善,得看更新日志。
好了,背景知识介绍完毕,下面开始安装过程。
1.获取gcc4.8.5的源码包(不同的版本,基本是只需要换掉后面的版本号即可更换下载地址)
- wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.bz2
2.解压压缩包
- tar -jxvf gcc-4.8.5.tar.bz2
3.进入解压后的目录
- cd gcc-4.8.5
4.下载、配置和安装需要的依赖库
- ./contrib/download_prerequisites
这个脚本文件会自动帮我们下载、配置、安装依赖库,可以节约我们大量的时间和精力。
5.直接在当前目录下创建一个目录,存放编译后的文件。
- mkdir gcc-build-4.8.5
6.进入这个目录来编译
- cd gcc-build-4.8.5
7.生成Makefile文件,准备编译整个项目(gcc4.8.5)
- ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
2.make
3.sudo make install
前面的..表示会进入到上一层目录执行configure。所以gcc-build-4.8.5目录必须在gcc-4.8.5里面创建,也就是我们这样创建的。
8.直接用gcc4.8.5编译程序会报错误:
/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./test4)
解决方法:
新安装的gcc的libstdc++.so.6的版本在/usr/local/lib下需要重新做软链接到/usr/lib下就行。
libstdc++.so.6 -> /usr/local/lib/libstdc++.so.6.0.19