CentOS 6 编译GCC 4.8.1简明流程

之前讨论了很多关于编译gcc的事情,都源自于当年在CentOS6.2上编译gcc4.7.2的事情,简直苦不堪言。

今天工作需要又要用CentOS了,用于gcc只用了更严格的开源协议GPL v3的问题,CentOS官方所能提供的最新gcc版本只能到4.4,要使用新特性,必须手动编译新版本的gcc。


经过了几年的学习和积累,今天上午轻松通过了当初恶魔般的centos上gcc编译。

知识方面和配置选项含义方面的东西在我前几篇关于编译gcc的blog中有重复的介绍,这里主要讲操作步骤。

参考:http://blog.csdn.net/yanxiangtianji/article/details/12511961

https://gcc.gnu.org/install/


我所使用的系统是CentOS 6.4 64位版。

提醒:建议分配的硬盘空间大于10G,否则可能会出现编译时遭遇磁盘空间不足的问题。


综述:

1,依赖关系:

工具:

tar, gzip, bz2;

gcc, g++, make;

基础库:

glibc-static;

专用库:

浮点数运算相关:gmp, mpfr, mpc;

编译优化相关:cloog, isl;


在实际操作中,这5个专用库都可以不预先编译安装,而可以将源码包解压放置在gcc下的对应名称的子目录中。gcc在编译的时候会自动检查并去编译它们。


2,步骤:

(1) 安装依赖的工具(tar, gzip, bz2, make一般都以及系统自带了);

(2) 安装基础库;

(3) 准备专用库的源码包 / 自行安装;

(4) 配置并启动gcc的编译。



CentOS上的编译步骤


0,下载并解压gcc,创建编译用临时目录

假设下载到了当前目录,文件名为gcc-4.8.1.tar.bz2

tar xfj gcc-4.8.1.tar.bz2

cd gcc-4.8.1

mkdir build


1,安装旧版本的gcc,g++(如果的在安装CentOS的时候没有装的话)

yum install gcc g++


2,安装glibc静态库

yum install glibc-static


3,安装cloog,gmp开发版(后者仅在打算手动编译isl时需要)

yum install cloog-ppl gmp-devel


3’,其他做法:

下载CLooG源码,解压后放置在gcc源码目录下的cloog子目录。然后在编译gcc的时候,它会自动被编译安装。


4,下载编译isl

(CentOS没有提供rpm包,需要手动下载。另外它不是gnu的项目即在gnu的镜像上没有它的主页。如果不嫌版本陈旧的话,为了方便可以直接在gcc项目提供的依赖资源目录里面找:ftp://gcc.gnu.org/pub/gcc/infrastructure/

wget ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-0.11.1.tar.bz2

tar xfj isl-0.11.1.tar.bz2

cd isl-0.11.1

./configure

make

make install


4‘,简便做法:

下载isl的源码,解压后放在gcc源码目录下的isl子目录。然后在编译gcc的时候,它会自动被编译安装。


5,下载gmp,mpfr,mpc源码(可以不手动编译)

通过自带脚本一键搞定。

./contrib/download_prerequisites

也可以手动一个个下载源码包,解压后放在gcc源码目录下的gmp,mpfr,mpc子目录。


如果已经通过yum安装过gmp-devel并成功编译安装了isl,那么gmp包可以不再下载了。

脚本中的下载地址是gcc项目组提供的在自己网站上的一个副本,而不是链接到这些项目自己的主页。

这3个项目都是gnu的,gnu镜像中都提供下载,如果在官方网站下载比较慢,可以修改脚本中的下载地址为这些项目各自在国内的gnu镜像的下载地址,需要注意的是要修改版本号为具体项目中的新版本号,因为download_prerequisites脚本中默认些的那些是最低要求,而有些旧版本都已经不提过下载了。


6,配置gcc编译选项

cd build

../configure --prefix=/usr --enable-languages=c,c++ --disable-multilib

不推荐先加"--program-suffix=-4.8.1"再通过配置连接的方式共存两个版本的gcc。


7,编译安装(如果gmp,mpfr,mpc没有编译安装,这一步会自动编译安装它们)

make -j4

make install


编译之后的事

在CentOS下/usr/bin/gcc不同于Ubuntu,前者是一个可执行的二进制文件,后者是一个连接,连接到已经安装的gcc版本如gcc-4.6.3,这一点可以用个调用ls -l来证实。

所以如果想要保留原来的gcc,就必须重命名它们,并且配置连接,这样操作比较复杂,而且CentOS默认的4.4.7的版本不同于Ubuntu默认的4.6,它已经很落后了,而且没有重大的调整,没有必要保留。




原载于http://blog.csdn.net/yanxiangtianji

转载请注明出处



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值