Centos6.X 手动升级gcc
操作环境 CentOS6.5 64bit,gcc原版本为4.4.7,不能支持C++11的特性,所以需要升级
[root@zengxj ~]# wget http://ftp.gnu.org/gnu/gcc/gcc-6.1.0/gcc-6.1.0.tar.gz [root@zengxj ~]# tar -zvxf gcc-6.1.0.tar.gz --directory=/usr/local/ [root@zengxj ~]# cd /usr/local/gcc-6.1.0 [root@zengxj gcc-6.1.0]# ./contrib/download_prerequisites [root@zengxj gcc-6.1.0]# mkdir build && cd build [root@zengxj build]# ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib [root@zengxj build]# make [root@zengxj build]# make install # 替换原来的gcc版本 [root@zengxj build]# update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/x86_64-pc-linux-gnu-gcc 40 [root@zengxj build]# mv /usr/bin/gcc /usr/bin/gcc.bak [root@zengxj build]# ln -s /usr/local/bin/x86_64-pc-linux-gnu-gcc /usr/bin/gcc # 重启 [root@zengxj build]# reboot
在执行程序出现 "/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found" 的情况,可能是已安装过高版本的gcc但是未软连接
解决方法:查找编译gcc时生成的最新动态库
find / -name "libstdc++.so*" cd /usr/lib64 ll stdlibc++*
这时可以看到当前libstdc++.so.6指向13的版本,接下来将刚刚的高版本的复制到这里并重建软链即可
rm libstdc++.so.6 ln -s libstdc++.so.6.0.22 libstdc++.so.6