【推荐】CentOS安装gcc-4.9.4+更新环境+更新动态库
注:以下所有操作均在CentOS 6.8 x86_64位系统下完成。
CentOS上yum安装的gcc版本过低(4.4.7),在安装某些软件的时候不支持,所以这里需要对其进行升级。
#gcc的安装#
开始下载gcc并进行编译安装:
# cd /usr/local/src
# wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.9.4/gcc-4.9.4.tar.gz
# tar zxf gcc-4.9..tar.gz
# cd gcc-4.9.
# ./configure --prefix=/usr/local/gcc-4.9. --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ ...
configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.+ and MPC 0.8.+.
Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify
...
直接进行configure的时候出错了!提示缺少GMP、MPFR和MPC。但是如果单独去下载这三个包并单独编译比较麻烦,这里有个推荐的方法是执行download_prerequisites文件。我们来查看该文件:
# vim contrib/download_prerequisites ...
# Necessary to build GCC.
MPFR=mpfr-2.4.
GMP=gmp-4.3.
MPC=mpc-0.8. wget ftp://gcc.gnu.org/pub/gcc/infrastructure/$MPFR.tar.bz2 || exit 1
...
可以看到该文件会自动去下载关联的软件包,并且放置到当前目录下,跟gcc一起编译,这样更加方便。
# contrib/download_prerequisites
# ./configure --prefix=/usr/local/gcc-4.9. --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++
...
configure: creating ./config.status
config.status: creating Makefile
这次通过了!
在configure的时候我们加入了一些参数,这些参数主要表示的是:
- --prefix:指定安装路径。
- --enable-threads=posix:启用POSIX标准的线程支持。要让程序能在符合POSIX规范的linux发布版上正确运行,就应该启用该选项。这里取决于目标操作系统的类型,其它可用值有:aix、dec、solaris、win32等。
- --disable-checking:不对编译时生成的代码进行一致性检查(检查的话一般设置为:--enable-checking=release)。建议机器硬件配置较低以及不愿等待太久编译时间的童鞋,可以设置为disable,但是这会增加产生未预期的错误的风险。
- --disable-multilib:如果你的操作系统是32位,默认就已经设置为disable,这意味着gcc仅能生成32位的可执行程序。如果你的操作系统是64位,默认设置为enable,这意味着用gcc编译其它源文件时可以通过-m32选项来决定是否生成32位机器代码。由于我们这里是64位系统上,所以要禁止生成32位代码。
- --enable-languages=c,c++:支持的高级语言类型和运行时库,可以设置的所有语言还包括ada、Fortran、java、objc、obj-c++、GO等语言。这里只开启了c和c++,因为支持的语言越多,就需要安装越多的相应静态与动态库,等待的时间也越久。
接下来就是编译安装,这个时间会比较久,这里差不多等了两个多小时。
# make
# make install
#更新环境#
这个时候使用gcc命令时默认调用的还是旧的/usr/bin/gcc,所以需要更新环境变量:
# gcc --version
gcc (GCC) 4.4. (Red Hat 4.4.-) # vim /etc/profile export PATH=/usr/local/gcc-4.9./bin:$PATH # source /etc/profile
# gcc --version
gcc (GCC) 4.9.
#更新动态库#
虽然现在gcc命令已经升级了,但是在编译或运行某些程序的时候,有可能会出现类似:
| /usr/lib64/libstdc++.so.6: version 'GLIBCXX_3.4.20' not found |
的错误,这是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库所导致的,所以这个时候还需要将gcc最新版本的动态库替换系统中老版本的动态库。
# strings /usr/lib64/libstdc++.so. | grep GLIBC
GLIBCXX_3.
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
GLIBC_2.2.5
GLIBC_2.
GLIBC_2.
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
可以看到上面的动态库还是旧版本的动态库,没有更新。
# find / -name "libstdc++.so*"
/usr/lib/gcc/x86_64-redhat-linux/4.4.//libstdc++.so
/usr/lib/gcc/x86_64-redhat-linux/4.4./libstdc++.so
/usr/lib64/libstdc++.so.6.0.
/usr/lib64/libstdc++.so.
/usr/local/gcc-4.9./lib64/libstdc++.so.6.0.-gdb.py
/usr/local/gcc-4.9./lib64/libstdc++.so
/usr/local/gcc-4.9./lib64/libstdc++.so.6.0.
/usr/local/gcc-4.9./lib64/libstdc++.so.
...
可以看到旧的动态库是6.0.13,新的动态库是6.0.20。而.so.6是做了个软链:
# ls -l /usr/lib64/libstdc++.so.*
lrwxrwxrwx root root Apr : /usr/lib64/libstdc++.so. -> libstdc++.so.6.0.
-rwxr-xr-x root root Mar : /usr/lib64/libstdc++.so.6.0.
所以这里我们可以将新的库复制到/usr/lib64/目录并且重新做个软链:
# cp /usr/local/gcc-4.9./lib64/libstdc++.so.6.0. /usr/lib64/
# cd /usr/lib64/
# rm -f libstdc++.so.
# ln -s libstdc++.so.6.0. libstdc++.so.
# ls -l libstdc++.so.*
lrwxrwxrwx root root Apr : libstdc++.so. -> libstdc++.so.6.0.
-rwxr-xr-x root root Mar : libstdc++.so.6.0.
-rwxr-xr-x root root Apr : libstdc++.so.6.0.
这个时候我们可以重新来查看下是否已经包含了最新库:
# strings /usr/lib64/libstdc++.so. | grep GLIBC
GLIBCXX_3.
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.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBC_2.
GLIBC_2.2.5
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
可以看到动态库已经成功更新。
【推荐】CentOS安装gcc-4.9.4+更新环境+更新动态库的更多相关文章
- 转: Centos安装gcc及g++
Centos安装gcc及g++ Centos支持yum安装,安装软件一般格式为yum install .......,注意安装时要先成为root用户. 按照这个思路,我想安装过程如下: 安装gcc ...
- CentOS安装gcc clang git mysql等软件高版本福利
最近同事需要在单位提供的开发机上临时安装gcc等软件,时间紧迫,因此向其推荐安装福利devtoolset. 感谢devtoolset,使得CentOS软件安装无比的快捷,卸载也是无与伦比的简单. gc ...
- centos 安装gcc时,出错:Found 10 pre-existing rpmdb problem(s), 'yum check' output follows:
别人折腾的系统. 刚开始,准备安装下tornado,报错,需要安装 gcc 和 python-devel gcc安装报错,如标题所示: 谷歌了一把: http://stackoverflow.com/ ...
- CentOS 安装 gcc
centos linux默认可以采用yum方式安装,则采用如下命令安装gcc编译器即可:#yum -y install gcc 系统会自动安装gcc及依赖组件 gcc ...
- Centos安装gcc及g++
Centos支持yum安装,安装软件一般格式为yum install .......,注意安装时要先成为root用户. 按照这个思路,我想安装过程如下: 安装gcc:yum install gcc 安 ...
- centos安装gcc
1.安装gcc基本开发工具环境 yum groupinstall 'Development Tools' 2.安装完成后查看安装是否成功 whereis gcc 3.查看gcc版本 gcc --ver ...
- Linux虚拟机(CentOS)安装gcc, g++
1. 确保自己的虚拟机联网 点击那个三角形可以选择连接网络 如果还是连不了网,参考https://www.cnblogs.com/xingbo/p/6100554.html 2.联网后,使用命令 ...
- linux CentOS 安装 nginx+tomcat+java+mysql运行环境
本文介绍了CentOS7 64 Java,Tomcat,MySQL,Maven热部署等服务器环境的搭建过程. 服务器: 已经将所需要的工具(Xshell,Xftp.FileZilla等sftp上传工具 ...
- ubuntu 安装 GCC 和 G++ C++ 开发环境
1.先安装 :sudo apt-get install build-essential 2.查看 gcc 版本 然后安装 统一版本的 g++ gcc --version gcc (Ubuntu/Lin ...
随机推荐
- 【数据库】MySQL中的共享锁与排他锁
转载:http://www.hollischuang.com/archives/923 在MySQL中的行级锁,表级锁,页级锁中介绍过,行级锁是Mysql中锁定粒度最细的一种锁,行级锁能大大减少数据库 ...
- js实现单双行文本溢出添加省略号
# 单双行文本溢出省略 ``` // 2. 当内容过多的时候,单行省略号: overflow: hidden; text-overflow:ellipsis; white-space: nowrap; ...
- 关于Unity中如何代码动态修改天空盒
在Unity中动态修改天空盒有两种方法: 一.为每个Texture建立天空盒材质球,需要更换时直接将对应材质球作为天空盒,缺点是建立的材质球太多 private void ChangeSkybox(M ...
- NODE_ENV 不是内部或外部命令,也不是可运行的程序,或者批处理文件
今天碰到一个奇葩问题,mac上能执行的npm命令,到windows上执行不聊了,报这个错 NODE_ENV 不是内部或外部命令,也不是可运行的程序,或者批处理文件 这是怎么回事呢?听我慢慢道来. &q ...
- VC++开发AutoCAD 2018/objectARX 用向导新建项目无法新建的问题
话说笔者最近想用新机子上装的AutoCAD ObjectARX 2018来进行二次开发,兴致勃勃安装了ARX API和向导, 然后打开VS2015,新建项目,无法新建. 折腾了一下,还是没有解决,后面 ...
- C#/AutoCAD 2018/ObjectArx/二次开发添加删除实体的工具函数(四)
1.添加删除实体 C# ObjectARX二次开发添加删除实体是非常容易主要代码如下: 添加实体: objId = btr.AppendEntity(entity); trans.AddNewlyCr ...
- Leetcode 35——Search Insert Position
Given a sorted array and a target value, return the index if the target is found. If not, return the ...
- JavaScript(第一天)【<script>标签浅析】
一.创建一张HTML页面 初学者创建一张html页面建议借助工具,例如Dreamweaver可视化编辑器. 二.<Script>标签解析 <script>xxx</s ...
- C语言--总结报告
1.当初你是如何做出选择计算机专业的决定的? 经过一个学期,你的看法改变了么,为什么? 你觉得计算机是你喜欢的领域吗,它是你擅长的领域吗? 为什么? 当初填报志愿我是有很明确的专业方向的,就是IT类的 ...
- 2018上c语言第0次作业
随笔: 1.翻阅邹欣老师博客关于师生关系博客,并回答下列问题,每个问题的答案不少于500字: (1)最理想的师生关系是健身教练和学员的关系,在这种师生关系中你期望获得来自老师的哪些帮助? 答:对此问题 ...