微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CentOS升级gcc4.8.5

因项目编译需要用c++11,需要升级Centosgcc版本到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

六.生成Makefile文件

# 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的新的库文件了。

3.复制这个库文件到指定目录,并修改软连接

# 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

...

(完成)

原文地址:https://www.jb51.cc/centos/375564.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。