因项目编译需要用c++11,需要升级Centos的gcc版本到gcc4.8.5。
一.安装Centso开发工具
# yum groupinstall "Development Tools"
二.下载gcc4.8.5
下载地址:http://ftp.gnu.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.bz2
三.解压
#tar -jxvf gcc-4.8.5.tar.bz2
四.执行命令,自动下载配置、依赖库
下载过程有点久,请蛋定。
# cd gcc-4.8.5
# ./contrib/download_prerequisites
五.建编译后的存放目录
# mkdir gcc-build-4.8.5
# cd gcc-build-4.8.5
# ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
七.执行make,耗时大约1h
# make
八.安装
# make install
九.重启,测试
# reboot //一定要重启
# gcc -v
# g++ -v
十.库升级
编译程序或运行其它程序时,有时会出现类似:
/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found
的问题。这是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库导致的,将gcc最新版本的动态库替换系统中老版本的动态库即可解决。
1.检查
#strings /usr/lib64/libstdc++.so.6 | grep GLIBC
2.找到 gcc 4.8.5 最新的库文件
#find / -name "libstdc++.so*"
/usr/lib64/libstdc++.so.6.0.13
/usr/lib64/libstdc++.so.6/usr/lib/gcc/x86_64-redhat-linux/4.4.4/32/libstdc++.so/usr/lib/gcc/x86_64-redhat-linux/4.4.4/libstdc++.so/usr/lib/vmware-tools/lib64/libstdc++.so.6/usr/lib/vmware-tools/lib64/libstdc++.so.6/libstdc++.so.6/usr/lib/vmware-tools/lib32/libstdc++.so.6/usr/lib/vmware-tools/lib32/libstdc++.so.6/libstdc++.so.6/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.13-gdb.pyc/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.13-gdb.pyo/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.13-gdb.py/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.13-gdb.pyc/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.13-gdb.pyo/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.13-gdb.py/usr/local/lib64/libstdc++.so.6.0.19/usr/local/lib64/libstdc++.so.6/usr/local/lib64/libstdc++.so/usr/local/lib64/libstdc++.so.6.0.19-gdb.py
/opt/gcc-4.8.5/gcc-build-4.8.5/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.19/opt/gcc-4.8.5/gcc-build-4.8.5/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6/opt/gcc-4.8.5/gcc-build-4.8.5/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so/opt/gcc-4.8.5/gcc-build-4.8.5/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.19/opt/gcc-4.8.5/gcc-build-4.8.5/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6/opt/gcc-4.8.5/gcc-build-4.8.5/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so/opt/gcc-4.8.5/gcc-build-4.8.5/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.19/opt/gcc-4.8.5/gcc-build-4.8.5/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6/opt/gcc-4.8.5/gcc-build-4.8.5/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
上面粗体加黑的libstdc++.so.6.0.19,就是目前4.8.5的新的库文件了。
# cp /opt/gcc-4.8.5/gcc-build-4.8.5/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.19 /usr/lib64
# cd /usr/lib64
# rm libstdc++.so.6
# ln -s libstdc++.so.6.0.19 libstdc++.so.6
4.检查一遍
# strings /usr/lib64/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4GLIBCXX_3.4.1GLIBCXX_3.4.2GLIBCXX_3.4.3GLIBCXX_3.4.4GLIBCXX_3.4.5GLIBCXX_3.4.6GLIBCXX_3.4.7GLIBCXX_3.4.8GLIBCXX_3.4.9GLIBCXX_3.4.10GLIBCXX_3.4.11GLIBCXX_3.4.12GLIBCXX_3.4.13GLIBCXX_3.4.14GLIBCXX_3.4.15GLIBCXX_3.4.16GLIBCXX_3.4.17GLIBCXX_3.4.18GLIBCXX_3.4.19
...
(完成)