CentOS6.6源码编译升级GCC至4.8.2
升级前提
源码编译需要至少要有一个可用的gcc编译器。
可以用过yum自动安装或者手动下载rpm包安装。
通过yum可以看到至少需要下面这些安装包,所以可以到许多rpm package站点中搜索下载相应的rpm包,不过版本要搞对了,这个yum搜出来的版本是针对4.4.7的。所以需要什么版本gcc就寻找什么版本对应的依赖包。现在的rpm站点都会说明这个软件包依赖哪些软件包,被哪些软件包依赖,非常方便,不过找起来还是比较耗时的。

编译安装GCC4.8.2
下载gcc4.8.2源码包
curl -O ftp://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.gz;
首先需要下载gcc安装所依赖的mpc,mpfr,gmp包,gcc自带了一个脚本帮我们下载并建立好链接等gcc编译时一起编译,你也可以自己去下载依赖包。
tar zxf gcc-4.8..tar.gz
cd gcc-4.8.
./contrib/download_prerequisites
打开上面的download_prerequisites可以看到,它首先下载了3个包,所以当发现脚本卡在下载的地方可能就是无法访问的原因了,这是需要去找一个新的下载地址,方法很简单,google文件名就可以找到很多。

开始编译gcc
mkdir gcc-build-4.8.
cd gcc-build-4.8.
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
make
make install
安装完成后如果发现gcc -v版本没有变化,就再执行以下启动脚本。
source /etc/profile
source ~/.bash_profile
安装完之后的问题
安装完之后虽然敲gcc g++ c++ 等版本都更新到了4.8.2但其实电脑里里面至少存在两个版本的gcc
whereis或者where可以看到有多个gcc文件,which命令可以看到命令gcc对应的是usr/local/bin/gcc,而原来的gcc执行文件在/usr/bin/gcc,执行/usr/bin/gcc -v可以看到gcc的版本还是4.4,这虽然问题不大,但有些shell脚本或者Makefile中直接写的是gcc的绝对路径,所以很有可能会使用旧的gcc版本去编译,从而导致失败。所以还是需要将原来的gcc覆盖掉。最开始想的办法是将、usr/bin/gcc软链接到usr/local/bin/gcc,对于g++,c++等也做相似的处理



这种方式看似解决了问题,但总觉得不靠谱,直到最近编译apache thrift发现还是不太对。所以考虑在安装gcc的时候是否可以指明安装路径。
执行
./configure --help
可以看到确实是有这样的选项的

所以只需要在configure的时候带上 --prefix=/usr 就可以将gcc编译安装到usr下了
CentOS6.6源码编译升级GCC至4.8.2的更多相关文章
- golang基于当前1.9版本进行源码编译升级到1.10
一.起因 golang出了最新的1.10版本,而刚出的vgo也是需要基于该最新版本的.为了测试vgo,因此需要将我的v1.9升级到v1.10版本. 安装过golang的同学都知道,golang常用的有 ...
- Mysql5.6 for Centos6.5源码编译安装
## 说明 不同服务器需要改变 server_id ,同一台机器上需要改变 port 1. 关闭防火墙[root@mysql ~]# service iptables status --查看防火墙状态 ...
- centos6.5 源码编译 mysql5.6.21
1.yum安装各个依赖包 [root@WebServer ~]# yum -y install gcc gcc-devel gcc-c++ gcc-c++-devel autoconf* automa ...
- Centos6.5源码编译安装nginx
1.安装pcre下载地址:http://jaist.dl.sourceforge.net/project/pcre/pcre/8.38/pcre-8.38.tar.gz #tar -axvf pcre ...
- Centos6.5 源码编译安装 Mysql5.7.11及配置
安装环境 Linux(CentOS6.5 版).boost_1_59_0.tar.gz.mysql-5.7.11.tar.gzMySQL 5.7主要特性: 更好的性能:对于多核CPU.固态硬盘. ...
- centos6.5环境源码编译安装mysql5.6.34
centos6.5环境源码编译安装mysql5.6.34 源码下载地址http://dev.mysql.com/downloads/mysql/5.6.html#downloads 选择Generic ...
- mysql5.7.10 源码编译安装记录 (centos6.4)【转】
一.准备工作 1.1 卸载系统自带mysql 查看系统是否自带MySQL, 如果有就卸载了, 卸载方式有两种yum, rpm, 这里通过yum卸载 rpm -qa | grep mysql //查看系 ...
- CentOS6.5下搭建LAMP环境(源码编译方式)
CentOS 6.5安装配置LAMP服务器(Apache+PHP5+MySQL) 学习PHP脚本编程语言之前,必须先搭建并熟悉开发环境,开发环境有很多种,例如LAMP ,WAMP,MAMP等.这里我介 ...
- centos7.6环境zabbix3.2源码编译安装版升级到zabbix4.0长期支持版
zabbix3.2源码编译安装版升级到zabbix4.0长期支持版 项目需求: .2版本不再支持,想升级成4.0的长期支持版 环境介绍: zabbix服务端是编译安装的,数据库和web在一台机器上 整 ...
随机推荐
- OcciWrapper使用指南(高性能Oracle访问组件)
occiwrapper使用指南 occiwrapper是一个开源的.跨平台的Oracle访问组件, 方便C++开发者们灵活地操作oracle数据库.为了方便使用,组件中的接口形式参考的POCO库的使用 ...
- php位运算的应用(转)
在实际应用中可以做用户权限的应用 我这里说到的权限管理办法是一个普遍采用的方法,主要是使用到”位运行符”操作,& 位与运算符.| 位或运行符.参与运算的如果是10进制数,则会被转换至2进制数参 ...
- linux 定时任务计划
crond: unrecognized service 无crond解决办法 安装计划任务:yum -y install vixie-cron
- C#隐式类型
隐式类型 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sys ...
- Media Player框架
导入MediaPlayer.framework框架. //声明一个媒体播放器 var moviePlayer:MPMoviePlayerController? @IBAction func playM ...
- Java开发之I/O读取文件实例详解
在java开发或者android开发中,读取文件是不可避免的,以下对java开发中读取文件做了归纳和详解: 1.按字节读取文件内容2.按字符读取文件内容3.按行读取文件内容 4.随机读取文件内容 pa ...
- JVM笔记4:Java内存分配策略
简单来说,对象内存分配主要是在堆中分配.但是分配的规则并不是固定的,取决于使用的收集器组合以及JVM内存相关参数的设定 以下介绍几条基本规则(使用的ParNew+Serial Old收集器组合): 一 ...
- Java内存模型浅析
JVM在执行java程序时会将它所管理的内存划分成若干个不同的数据区域.如图所示: 其中方法区和堆是所有线程共享的数据区,其他区域则是线程隔离的数据区. 这些区域的功能各有不同: 程序计数器:可以理解 ...
- ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值
检查插入的值是否大于该字段数据类型约束的长度. 这个异常是指,用户向数据库执行插入数据操作时,某条数据的某个字段值过长,如 果是varchar2类型的,当长度超过2000,--4000(最大值)之间的 ...
- overflow 那些我们忽略的特点
首先感谢鑫哥的详细讲解,每每读之或观看之都有收获! 附加张鑫旭的博客地址:http://www.zhangxinxu.com/wordpress/2013/02/js-currying/ <sc ...