zoukankan      html  css  js  c++  java
  • 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:

    sudo apt-get install m4
    

      即可。

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

    $ 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目录

    $ 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的时提示错误:

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

      

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

    sudo apt-get install m4

    检查GMP是否安装成功:

    $ 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

    $ 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

    $ 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

    $ make
    $ sudo make install

    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就还不会被完全更新,会造成很多不必要的麻烦。

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

    安装完成后,

    gcc -v
    

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

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

      

  • 相关阅读:
    DEV GridView显示行号
    winfrom Log4Net 代码(二) 记录格式log_info.txt和log_error.txt,只产生两个文本,里面分别记录提示信息和报错信息
    VB.NET使用Log4Net
    Log4Net使用中loginfo.IsInfoEnabled=false问题解决方法
    VB.NET 根据当前日期获取星期几
    VB.NET 发送outLook邮件body基于Html样式
    VB.NET NPOI快速导入导出Excel
    python使用cx_oracle连接oracle数据库
    物理STANDBY库创建还原点(打开为READ WRITE后再变回STANDBY库)
    oracle RAC和RACOneNode之间的转换
  • 原文地址:https://www.cnblogs.com/LitLeo/p/3534196.html
Copyright © 2011-2022 走看看