使用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 -j44表示使用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这就是刚刚安装的版本,再执行一下测试程序./testCpp11,成功!