Centos下更新 gcc 版本至 GCC 6.1.0

使用yum安装是不可能了,各大仓库也没有,只能自己编译安装了。
系统为CentOS 6.5,gcc为4.4.7
1 下载源代码包
当前最新版为6.2:

wget http://ftp.gnu.org/gnu/gcc/gcc-6.2.0/gcc-6.2.0.tar.bz2  

也可以自行下载其他版本http://ftp.gnu.org/gnu/gcc
2 解压

tar jxf gcc-6.2.0.tar.bz2 

3 下载编译依赖

cd gcc-6.2.0  
./contrib/download_prerequisites  

经过漫长的等待,速度太慢了~
4 生成Makefile文件
先建一个编译的目录

mkdir gcc-build-6.2.0  
cd gcc-build-6.2.0/  
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib  

5 编译

make -j4  

4表示使用4个核心,根据你的CPU来指定。也可不指定任何参数。
6 安装

sudo make install 

7 验证

gcc -v  

还有原来的版本,重启后,再验证OK

8 测试
写个测试的程序测试一下:

g++ -std=c++11 -o testCpp11  testCpp11.cpp

顺利编译成功,执行./testCpp11提示:

./testCpp11: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ./testCpp11)  
./testCpp11: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./testCpp11)  
./testCpp11: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./testCpp11) 

看来动态库并没有更新。
9 更新动态库
查看动态库的版本:

strings /usr/lib64/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4  
GLIBCXX_3.4.1  
GLIBCXX_3.4.2  
GLIBCXX_3.4.3  
GLIBCXX_3.4.4  
GLIBCXX_3.4.5  
GLIBCXX_3.4.6  
GLIBCXX_3.4.7  
GLIBCXX_3.4.8  
GLIBCXX_3.4.9  
GLIBCXX_3.4.10  
GLIBCXX_3.4.11  
GLIBCXX_3.4.12  
GLIBCXX_3.4.13  

确实没有更新,默认情况下,会安装在如下目录:

/usr/local/lib64/libstdc++.so.6.0.22  

简单了,将原来的库替换为上面的就可以了:

rm -rf /usr/lib64/libstdc++.so.6  
ln -s /usr/local/lib64/libstdc++.so.6.0.22 /usr/lib64/libstdc++.so.6  

然后再查看动态库的版本:

strings /usr/lib64/libstdc++.so.6 | grep GLIBC

结果

GLIBCXX_3.4.22  
点赞