解决CentOS中gcc版本过低的问题
前言
在编译一些C/C++的程序的时候,经常会遇到unrecognized command line option "-std=c++11",这个提示是因为gcc不支持c++11。
什么是c++ 11?
C++11,(即ISO/IEC 14882:2011),是目前的C++编程语言的最新正式标准。它取代了第二版标准(第一版公开于1998年,第二版于2003年更新,分别通称C++98以及C++03,两者差异很小)。新的标准包含核心语言的新机能,而且扩展C++标准程序库。C++11新标准由C++标准委员会于2011年8月12日公布,并于2011年9月出版。此次标准为C++98发布后13年来第一次重大修正。
哪个版本的gcc开始支持c++ 11 ?
gcc 4.7。
因此,如果我们代码里面需要用到c++标准的,就必须将gcc升级到gcc4.7以上。
如何升级?
如果直接升级了系统自带的gcc,有可能导致系统自带的程序出现不兼容的情况,导致系统崩溃。因此,升级的时候必须考虑自定义目录,不能覆盖系统的路径下的gcc。
1、下载
mkdir -p /root/gcc
cd /root/gcc
wget -c http://mirror.koddos.net/gcc/releases/gcc-4.8.5/gcc-4.8.5.tar.bz2
2、解压
tar jxf gcc-4.8.5.tar.bz2
cd gcc-4.8.5
3、预下载依赖源码包
./contrib/download_prerequisites
配置编译文件
./configure --prefix=/opt/gcc --enable-checking=release --enable-languages=c,c++ --disable-multilib # 机器是64位的,就不使用32位的包了,--disable-multilib
5、编译
make -j4 #如果有多核CPU尽量都用上,要编译很久
6、安装
make install
7、添加环境变量
echo 'export PATH=/opt/gcc/bin:$PATH' >> /etc/profile
8、生效变量
source /etc/profile
9、查看版本
gcc -v
10、有些代码里面还会用到cc这个命令来调用gcc ,而我们自己编译的目录下没有cc这个执行程序,可以做个软链接就可以了。
cd /opt/gcc/bin && ln -s gcc cc
总结
如果我们升级的gcc导致有些程序无法执行需要回退,可以直接删除环境变量即可。