14

CentOS 6 编译GCC 4.8.1简明流程

 3 years ago
source link: https://blog.csdn.net/yanxiangtianji/article/details/12782839
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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 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

转载请注明出处


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK