最近项目要修改gcc源代码,最新的gcc4.8放出,对c11的支持有进步,自然要在最新的gcc上动手,vm虚拟机上装了个ubuntu10.04,自带的gcc是4.4.3的。
先看了下ubuntu software center发现已经有gcc4.8可以直接下载安装了,于是先下载装上,直接用4.8去编译4.8的源代码……
第一步,下载源代码http://gcc.gnu.org/
第二步,解压缩:tar zxvf gcc-4.8.0.tar.gz
第三步,新建一个build生成存放的目录,与解压缩后的目录平级:mkdir temp,并进入当前目录:cd temp
第四步,尝试配置gcc:../gcc-4.8.0/configure,结果出错:Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+,分别下载这几个依赖库
gmp:http://www.multiprecision.org/index.php?prog=mpc&page=download,最新版1.0.1
mpc:http://gmplib.org/#DOWNLOAD,最新版5.1.1
mpfr:http://www.mpfr.org/mpfr-current/#download,最新版3.1.2
下载完这三个库之后,由于存在的依赖关系,故要按顺序安装gmp,mpfr,mpc
gmp:
1.解压缩:tar zxvf gmp-5.1.1.tar.gz
2.新建一个build生成存放目录,与解压缩后的目录平级:mkdir temp,并进入新建目录:cd temp
3.配置:../gmp-5.1.1/configure,结果提示:No usable m4 in $PATH or /usr/5bin (see config.log for reasons).
下载m4:http://ftp.gnu.org/gnu/m4/,最新版1.4.16
3.1.同2一样的建立一个temp目录,转至该temp目录
3.2.配置:$../m4-1.4.16/configure,
3.3.然后:$make,
3.4.然后:$sudo make install,完成安装m4。
4.继续安装gmp,如3-1到3-4的步骤,完成安装gmp,网上查到在configure时,加--prefix=/usr/local/gmp来指定安装目录的,此处不指定,会默认安装到/usr/bin,/usr/lib,/usr/include下。
5.与4相同的步骤完成mpfr的安装,不过此时配置mpfr的configure时,需要指定依赖gmp,用--with-gmp=/usr/local
6.与4相同的步骤完成mpc的安装,此时需要指定依赖gmp和mpfr,用--with-gmp=/usr/local --with-mpfr=/usr/local
7.在编译过程中,遇到过这样的错误:zlib.h: No such file or directory,是由于没有安装zlib,用指令sudo apt-get install zlib1g-dev进行安装
第五步.继续配置gcc的configure,进入到第四步建立的temp文件夹下,运行:$../gcc-4.8.0/configure --prefix=/usr/local/gcc4.8 --enable-languages=c,c++(这里仅指定gcc的安装目录与支持的语言,如果有其他的需求,需要另行指定参数)
第六步.设置环境变量,$export LD_LIBRARY_PATH=/usr/local/lib(注意,此环境变量为临时变量,关闭shell会丢失,故最好每次make之前都设置一下)
第七步.开始编译:$make( 注意不要切换root账号,我曾经脑残的用sudo make,这完全不是一个用户了……,这将是一个漫长的过程,等待啊,等待……)
第八步.安装:$sudo make install(我就不装了,只是为了能编译通过而已……)