Ubuntu Server 10.04.4 64bit手动编译gcc-4.5.1

  最近在搞点研究,在ubuntu Server上用gcc编译一个比较小众的软件,然后你懂得,万恶的版本问题啊!只能乖乖的手动编译低版本的gcc了 ~

  首先,介绍一下手动编译过程中的一些版本问题,并且强烈建议不要随意更换版本!

  操作系统:Ubuntu Server 12.04.4 64bit(安装在虚拟机中)

  gcc:编译前版本4.4.3,编译后版本4.5.1

  安装GCC需要使用到3个辅助的软件包,分别为gmp、mpfr、mpc,到官网下载最新版即可:

  gmp:http://gmplib.org、http://ftp.gnu.org/gnu/gmp/(我使用的版本5.1.1)
  mpfr:http://www.mpfr.org、http://ftp.gnu.org/gnu/mpfr/(我使用的版本3.1.1)
  mpc: http://www.multiprecision.org(我使用的版本1.0.1)

  m4:

1
sudo apt-get install m4

  即可。

另外,还需要安装2两个额外的软件,就是g++-multilib和zip:

1
$ sudo apt-get install g++-multilib zip

1.1 安装GMP
因为MPFR和MPC都依赖于GMP包,所以首先安装GMP。

$ tar -xvf gmp-5.1.1.tar.bz2

建议:在Linux下手动编译软件时,要养成建立build目录的好习惯,所以建立一个gmp-1.0.1-build目录

1
2
3
4
5
6
$ mkdir gmp-5.1.1-build
$ cd gmp-5.1.1-build
$./../gmp-5.1.1/configure (可以使用配置参数--prefix=指定安装位置,这里使用默认 /usr/local/include 和/usr/local/lib)
$make
$make check (这一步用来确保编译正确)
$sudo make install

如果在执行configure的时提示错误:

1
checking forsuitable m4... configure: error: No usable m4 in$PATH or /usr/5bin

  

说明我们还要安装m4这个库。

1
sudo apt-get install m4

检查GMP是否安装成功:

1
$ ls /usr/local/lib/libgmp*

出现以下表示成功了:

/usr/local/lib/libgmp.a /usr/local/lib/libgmp.so.10
/usr/local/lib/libgmp.la /usr/local/lib/libgmp.so.10.0.5
/usr/local/lib/libgmp.so

1.2 安装MPFR

1
2
3
4
5
6
7
8
$ tar -xvf mpfr-3.1.1
$ mkdir mpfr-3.1.1-build
$ cd mpfr-3.1.1-build
$ ./../mpfr-3.1.1/configure --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib
(由于mpfr依赖于gmp这个库,所以在configure时,需要设置好gmp库所在的位置,供安装mpfr库时使用。)
$ make
$ make check(不知什么原因,在这一步的make check报告出错,说gmp找不到,可以暂时不理,因为依旧可以安装成功)
$ sudomakeinstall

1.3 安装MPC

1
2
3
4
$ tar -xvf mpc-1.0.1
$ mkdir mpc-1.0.1-build
$ cd mpc-1.0.1-build
$ ./../mpc-1.0.1/configure --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/loca/lib --with-mpfr-include=/usr/local/include --with-mpfr-lib=/usr/loca/lib<br><br>$ make <em id="__mceDel"> </em>
1
<em id="__mceDel"><em id="__mceDel">$ sudo make install</em></em>

1.4 设置环境变量

需要的库都安装完后,为了防止编译gcc时找不到这三个库,所以需要确认库位置是否在环境变量中 LD_LIBRARY_PATH中

$ echo $LD_LIBRARY_PATH

如果没有的话,手动添加即可

1.4.1 临时办法

$ export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib"

1.4.2 永久办法

为了以后使用的时候不再设置,可以修改/etc/bashprofile或者/etc/profile。这里修改的是全局变量,对所有用户有效,
修改~/.bashprofile 和~/.profile可以修改用户的全局变量。

$ sudo vim /etc/profile

在文件末尾添加以下两句:

export LD_LIBRARY_PATH=/usr/local/libLD_LIBRARYPATH=:/usr/local/gcc-4.7.2/lib:$LD_LIBRARYPATH

保存退出

$ source /etc/profile

 

二、开始安装GCC

最好是在gcc-4.5.1平级的目录中建一个gcc-build目录,以防编译失败导致的问题。编译过程很传统,但比较缓慢,由于我将gmp、mpfr、mpc都安装在了/usr/local目录中,所以需要这样配置:

$ ../gcc-4.5.1/configure --prefix=/usr --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local

这里建议大家一定要选择prefix为/usr,因为Ubuntu中apt-get安装的gcc就在这里,如果按照默认的/usr/local那么原来的gcc 4.4就还不会被完全更新,会造成很多不必要的麻烦。

这个过程会非常缓慢(或许是我用的虚拟机),需要几个小时,请做好心理准备~

安装完成后,

1
gcc -v

  显示如下界面标注安装成功~

Ubuntu Server 10.04.4 64bit手动编译gcc-4.5.1

 

四、最后,随便编写一个小程序,使用gcc来测试一下吧!

 

 

 

  

Ubuntu Server 10.04.4 64bit手动编译gcc-4.5.1

上一篇:Object C学习笔记5-ARC forbids explicit message* 编译错误


下一篇:Flutter android GradleException显示红色报错解决办法