一、升级前测试:
1、 查看系统版本:# cat /etc/redhat-release
2、 查看默认的gcc版本:# gcc --version
3、 查看默认动态库:# strings /usr/lib64/libstdc++.so.6 | grep GLIBC
4、 不支持c++11的新特性:
尝试写一个C++11特性的程序段tryCpp11.cc,使用了shared_ptr
# vim /tmp/tryCpp11.cc
#include
#include
int main()
{
std::shared_ptr
std::cout << *pInt << std::endl;
return 0;
}
# cd /tmp
# g++ -std=c++11 -o tryCpp11 tryCpp11.cc
二、下载gcc:
下载地址http://ftp.gnu.org/gnu/gcc/,版本gcc-6.4.0.tar.xz,或者# yum -y install wget
# wget http://ftp.gnu.org/gnu/gcc/gcc-6.4.0/gcc-6.4.0.tar.xz
三、编译安装gcc:
# yum -y install xz
# tar -xf gcc-6.4.0.tar.xz -C /usr/src
# cd /usr/src/gcc-6.4.0
=================================================================================
#./contrib/download_prerequisites
//通过FTP的方式下载编译gcc时需要用到的mpfr-2.4.2.tar.bz2、gmp-4.3.2.tar.bz2、mpc-0.8.1.tar.gz和isl-0.15.tar.bz2软件包,由于可能会出现无法下载的情况,所以事先将这4个软件包放至在/usr/src/gcc-6.4.0目录下,并解压
# cd /usr/src/gcc-6.4.0
# cp /software/mpfr-2.4.2.tar.bz2 .
# cp /software/gmp-4.3.2.tar.bz2 .
# cp /software/mpc-0.8.1.tar.gz .
# cp /software/isl-0.15.tar.bz2 .
# tar -xf mpfr-2.4.2.tar.bz2
# tar -xf gmp-4.3.2.tar.bz2
# tar -xf mpc-0.8.1.tar.gz
# tar -xf isl-0.15.tar.bz2
# ln -sv mpfr-2.4.2 mpfr
# ln -sv gmp-4.3.2 gmp
# ln -sv mpc-0.8.1 mpc
# ln -sv isl-0.15 isl
# ls
=================================================================================
# ./configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
# make -j4 //-j4:make对多核处理器的优化选项,此步骤非常耗时
# make install
# ls /usr/local/bin | grep gcc
四、配置gcc:
# find / -name "libstdc++.so*"
# cd /usr/lib64
# cp /usr/src/gcc-6.4.0/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.22 .
# mv libstdc++.so.6 libstdc++.so.6.old
# ln -sv libstdc++.so.6.0.22 libstdc++.so.6
五、升级后验证:
1、 查看升级后的gcc版本(有时可能需要重启服务器才能看到更新后的版本):# gcc --version
2、 查看最新动态库:# strings /usr/lib64/libstdc++.so.6 | grep GLIBC
3、 支持c++11的新特性:
# cd /tmp
# g++ -std=c++11 -o tryCpp11 tryCpp11.cc
# ./tryCpp11