Centos 6.5升级gcc : 源码安装 + rpm安装
1. 前言
采用Centos 6.5默认的gcc版本为4.4.7,不支持c++ 11,需要升级;
首先想到用yum命令:执行yum update gcc-c++或yum update g++ 显示没有可用更新;
于是只能手动下载更新gcc。
2. 源码安装
rpm安装请见(4.参考资料)
@ 下载最新版本gcc:http://gcc.gnu.org/
@ 准备好以下三个库,否则./configure将出现以下错误提示:
这三个库可以使用gcc下自带的脚本安装:./contrib/download_prerequisites (手动安装的下载地址:GMP,MPFR, MPC)
@ 进入gcc的目录下,并执行configure,成功将生成Makefile文件;
# ./configure --prefix=/usr/local/gcc-5.4.0 --disable-multilib
--prefix:指定gcc的安装目录,若不指定gcc将默认安装在/usr/local;
--disable-multilib:由于我使用的是64位系统,不加的话讲出现如下错误提示 -
@ 编译:# make 安装:# make install
执行安装命令将编译好的文件拷贝到目标安装文件夹中,至此安装告一段落;
3. 配置
1) gcc 5.4.0的所有文件,包括命令文件(如gcc、g++)、库文件等都在安装目录下分别存放,如命令文件放在bin目录下、库文件在 lib下、头文件在include下等。由于命令文件和库文件所在的目录还没有包含在相应的搜索路径内,所以必须要作适当的设置之后编译器才能顺利地找到并使用它们。
@ 方法一:将gcc的安装目录/bin放在PATH中;
@ 方法二:使用符号连接的方式,这样做可以仍然使用系统上的旧版本的gcc编译器 -
(1)查看原来的gcc所在的路径:
# which gcc 显示:/usr/bin/gcc, 因此,原来的gcc命令在/usr/bin目录下,将原来的gcc和g++文件更名为gcc447,g++447;
(2)将gcc 5.4.0中的gcc、g++、gcj等命令在/usr/bin目录下分别做一个符号连接:
# cd /usr/bin
# ln -s gcc安装目录/bin/gcc gcc
# ln -s gcc安装目录/bin/g++ g++
这样,就可以分别使用gcc、g++来调用GCC 5.4.0的gcc、g++完成对C、C++程序的编译了。同时,仍然能够通过gcc447,g++447使用旧版本的GCC编译器。
2)源码编译升级安装了gcc后,编译程序或运行其他程序时,有时会出现类似“/usr/lib64/libstdc++.so.6:version 'GLIBCXX_*' not found的问题:
这是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库导致的,需要将gcc最新版本的动态库替换系统中老版本的动态库;
@ 解决方法
(1)首先检查动态库
=》gcc的动态库依然为旧版本;
(2)执行以下命令,查找编译gcc时生成的最新动态库
# find / -name "libstdc++.so*"
(3)将上述最新动态库libstdc++.so.6.0.21复制到/usr/lib64目录下;修改系统默认动态库的指向即可:
# cd /usr/lib64
# rm -rf libstdc++.so.6
# ln -s libstdc++.so.6.0.21 libstdc++.so.6
4. 参考资料
Linux升级安装gcc:/usr/lib/libstdc++.so.6:version GLIBCXX_* not found
Centos 6.5升级gcc : 源码安装 + rpm安装的更多相关文章
- CentOS 7.2使用源码包编译安装MySQL 5.7.22及一些操作
CentOS 7.2使用源码包编译安装MySQL 5.7.22及一些操作 2018年07月05日 00:28:38 String峰峰 阅读数:2614 使用yum安装的MySQL一般版本比较旧,但 ...
- CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)
---恢复内容开始--- CentOS 6.6 升级GCC G++ (当前最新GCC/G++版本为v6.1.0) 没有便捷方式, yum update.... yum install 或者 添加y ...
- 【转】CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)
原文地址:https://www.cnblogs.com/lzpong/p/5755678.html 我这里是centos7 升级到gcc8.1,过程差不多,参考这篇文章,记录一下. ---原文--- ...
- Linux——【rpm、yun、源码包】安装
RPM包或者安装源码包 在windows下安装一个软件很轻松,只要双击.exe的文件,安装提示连续“下一步”即可,然而linux系统下安装一个软件似乎并不那么轻松,因为我们不是在图形界面下.所以我们要 ...
- Linux学习笔记15—RPM包的安装OR源码包的安装
RPM安装命令1. 安装一个rpm包rpm –ivh 包名“-i” : 安装的意思“-v” : 可视化“-h” : 显示安装进度另外在安装一个rpm包时常用的附带参数有:--force : 强制安装, ...
- zabbix 3.2.2 server端(源码包)安装部署 (一)【转】
环境准备: 操作系统 CentOS 6.8 2.6.32-642.11.1.el6.x86_64 zabbix server 172.16.10.150 zabbix agent 172.16.10. ...
- [转] ROS2源码编译和安装
机器人开源操作系统软件ROS在10年后, 终于推出全新架构的ROS2,代号“ardent”.中文意思为“热心的美洲鳖”,看来ROS2要从ROS1的“海龟”变成“土鳖”系列了. 与此同时,ROS2的编译 ...
- (3.2)mysql基础深入——mysql源码阅读工具安装与应用
(3.2)mysql基础深入——mysql源码阅读工具安装与应用 关键字:mysql源码阅读工具 工具列举:一般多用[1][2][3]吧 [1]source insight [2]写字板/记事本 UE ...
- 源码包的安装、rsync同步、inotify监测
一.源码包的安装 1.源码包的作用:yum 使用的是rpm包,rpm包安装的不能指定安装位置 源码包可以按需选择/定制,及时修复bug ,适用于各种平台 2.大致过程:源码包——>make gc ...
随机推荐
- New!一只菜鸟的学习之路....
今天拥有了自己的博客,希望在这里记录下自己成长的点点滴滴! 本博客主要记录: 1.在学习过程中遇到的问题及后续的解决办法: 2.技术上的困难,希望路过的大佬指点一二: 3.分享一些实用的技术材料: 4 ...
- 文件的读写 - open
#写文件,r路径\n 空格\t 缩进# fan=open(r'C:/Users/demiyangping_v/Desktop/fan.txt','w', encoding='utf-8')# fan. ...
- Android Google Play app signing 最终完美解决方式
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/105561341 本文出自[赵彦军的博客] 在 GooglePlay 创建 App ...
- 【python系统学习14】类的继承与创新
目录: 目录: [toc] 类的继承 子类和父类 继承的写法 继承示例 父类可以被无限个子类所继承 子类实例可调用父类属性和方法 类的始祖(根类) 根类 - object 实例归属判断 - isins ...
- Linux访问Window共享文件夹的配置步骤
1. Window下创建用户XXX(作用:Linux mount时需要提供用户和密码) 2. Window下共享文件夹给XXX用户,并根据实际需要设置读取/写入权限 3. Linux下创建挂载的目录 ...
- H - Bear and Three Balls
Limak is a little polar bear. He has n balls, the i-th ball has size ti. Limak wants to give one bal ...
- 曹工说Redis源码(7)-- redis server 的周期执行任务,到底要做些啥
文章导航 Redis源码系列的初衷,是帮助我们更好地理解Redis,更懂Redis,而怎么才能懂,光看是不够的,建议跟着下面的这一篇,把环境搭建起来,后续可以自己阅读源码,或者跟着我这边一起阅读.由于 ...
- Linux安装PHP的Redis扩展(已安装Redis)
1.下载需要的php操作redis的扩展包 下载地址 http://pecl.php.net/package/redis 下载对应php版本,我的php版本为7.3,下载的是最新的版本5.0.2 ...
- 视频+图文 String类干货向总结
目录 一.字符串的介绍及视频讲解 二.字符串的两种创建方式 方法一:通过new创建 方法二:直接创建 三.字符串的长度获取:length()方法 四.使用 == 和equals()方法比较两个字符串 ...
- self不明白什么意思,我来帮助你了解self的含义
先看下面这段代码 # 用函数模仿类def dog(name, gender): def jiao(dog1): print('%s汪汪叫' % dog1["name"]) def ...