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 ...
随机推荐
- MySQL学习之路2-数据库and数据表的基本操作
数据库基本操作 查看.选择数据库: show databases; use <databasename>; 创建数据库:create database <dbname> cha ...
- leetcode c++做题思路和题解(2)——链表的例题和总结
链表的例题和总结 0. 目录 环形链表 1. 环形链表 题目: https://leetcode-cn.com/problems/linked-list-cycle/ 看了别人的思路真是感概万千,思路 ...
- 跳转语句break与continue的使用环境
break:改变程序控制流 常用于do-while.while.for .switch循环中,终止某个循环,程序跳转到循环块外的下一条语句 continue:跳出本次循环,进入下一次循环
- 利用numpy实现多维数组操作图片
1.上次介绍了一点点numpy的操作,今天我们来介绍它如何用多维数组操作图片,这之前我们要了解一下色彩是由blue ,green ,red 三种颜色混合而成,0:表示黑色 ,127:灰色 ,255:白 ...
- ActiveMQ支持的消息协议
ActiveMQ支持哪些协议 ActiveMQ支持多种协议传输和传输方式,允许客户端使用多种协议连接ActiveMQ支持的协议:AUTO,OpenWire,AMQP,Stomp,MQTT等Active ...
- 常用vscode 插件第一季
VSCODE 常用插件第一季 1.chinese 此插件中文(简体)语言包为 VS Code 提供本地化界面. https://marketplace.visualstudio.com/items?i ...
- B2 - TV Subscriptions (Hard Version)
题目连接:https://codeforces.com/contest/1247/problem/B2 题解:双指针,,一个头,一个尾,头部进入,尾部退出,一开始先记录1到k,并记录每个数字出现的次数 ...
- 今天探究的CSS属性是box-sizing;
首先BOX-SIZING属性是CSS3的属性: 语法: box-sizing : content-box || border-box || inherit 取值说明 1.content-box:此值为 ...
- 操作google_sheets
起源:最近了使用flask和bootstrap写了测试小工具,数据全部使用excel存储,部署到测试环境. 问题:每次每个人在使用excel数据时都需要重新编辑好的excel通过upload按钮传到服 ...
- CISCN love_math和roarctf的easy_clac学习分析
Love_math 题目源码: <?php error_reporting(0); //听说你很喜欢数学,不知道你是否爱它胜过爱flag if(!isset($_GET['c'])){ show ...