博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CentOS升级gcc4.4.7到gcc4.8.5
阅读量:4068 次
发布时间:2019-05-25

本文共 3687 字,大约阅读时间需要 12 分钟。

2017-04-08,对第6步进行更新,加上了   # yum groupinstall "Development Tools"

--------------------------------------------

最近想要升级gcc,因为CentOS6.7默认自带的编译器是gcc 4.4.7,但是不支持c++11,所以我想升级到gcc 4.8.5,这样就可以完全支持c++11了。gcc官网上面说从gcc 4.8.1开始就完整支持g++11了[1]。升级的过程,主要参考了网上的资料[2]。

【gcc升级步骤】

1.下载gcc 4.8.5的压缩包

下载地址:http://ftp.gnu.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.bz2

2.找个目录存放,并解压 

#tar -jxvf gcc-4.8.5.tar.bz2

3.进入目录,执行命令

这个神奇的脚本文件会帮我们下载、配置、安装依赖库,可以节约我们大量的时间和精力。

# cd  gcc-4.8.5 

# ./contrib/download_prerequisites

4.建立一个目录供编译出的文件存放

# mkdir gcc-build-4.8.5

# cd gcc-build-4.8.5

5.生成Makefile文件

# ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

6.执行make,此处耗时大约1小时。不建议使用文献[2]提到的 make -j4,可能报错

# yum groupinstall "Development Tools"

# make

7.执行安装

# make install

8.完成后,测试

# reboot//请先重启,切记!

# gcc -v

# g++ -v

【库升级】

别以为gcc升级成功了,就可以直接编程c++11的程序了。还需要进行库升级。源码编译升级安装了gcc后,编译程序或运行其它程序时,有时会出现类似:

/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found

的问题。这是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库导致的,将gcc最新版本的动态库替换系统中老版本的动态库即可解决。[3]

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.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
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19

...

(完成)

参考文献:

[1] https://gcc.gnu.org/projects/cxx-status.html#cxx11

[2] http://www.linuxidc.com/Linux/2015-01/112595.htm

[3] http://blog.chinaunix.net/uid-14735472-id-5546498.html

转载地址:http://ikoji.baihongyu.com/

你可能感兴趣的文章
Truncate 表之恢复
查看>>
Oracle DG failover 后恢复
查看>>
mysql 主从同步配置
查看>>
为什么很多程序员都选择跳槽?
查看>>
mongdb介绍
查看>>
mongdb在java中的应用
查看>>
区块链技术让Yotta企业云盘为行政事业服务助力
查看>>
Yotta企业云盘更好的为媒体广告业服务
查看>>
Yotta企业云盘助力科技行业创高峰
查看>>
Yotta企业云盘更好地为教育行业服务
查看>>
Yotta企业云盘怎么帮助到能源化工行业
查看>>
企业云盘如何助力商业新发展
查看>>
医疗行业运用企业云盘可以带来什么样的提升
查看>>
能源化工要怎么管控核心数据
查看>>
媒体广告业如何运用云盘提升效率
查看>>
企业如何运用企业云盘进行数字化转型-实现新发展
查看>>
司法如何运用电子智能化加快现代化建设
查看>>
iSecret 1.1 正在审核中
查看>>
IOS开发的开源库
查看>>
IOS开发的开源库
查看>>