CentOS編譯安裝GCC 4.9.2成功


在Linux上編譯安裝gcc是個尋煩惱的活,對於像我這樣習慣於在Windows上面使用二進制安裝包的人來說,自已編譯安裝gcc是個相當大的挑戰,今天直接挑戰最新版的gcc,是4.9.2版本的,做之前查閱了大量的資料,本次安裝使用的系統是CentOS6.4,自帶的gcc是4.4.7版本,具體折騰過成如下:

准備工作,

  到GNU官方FTP下載GCC的源碼包gcc-4.9.2.tar.gz.

  下載下面三個依賴的安裝包,這三個包的版本在gcc-4.9.2/contrib/download_prerequisites腳本文件中有指明,按這個里面指定的版本下載即可:

    ftp://ftp.gnu.org/gnu/gmp/gmp-4.3.2.tar.bz2

    http://www.mpfr.org/mpfr-2.4.2/mpfr-2.4.2.tar.bz2

    http://www.multiprecision.org/mpc/download/mpc-0.8.1.tar.gz

編譯:

  首先是編譯安裝三個依賴庫,按以下步驟編譯安裝:

    一:解壓gmp-4.3.2.tar.bz2到自已指定的一個目錄比如/home/[你的用戶名]/gmp-4.3.2,另外在建一個/home/[你的用戶名]/gmp-build目錄,並進入這個目錄,在終端里執行../gmp-4.3.2/configure --prefix=/usr/local/gmp-4.3.2,--prefix表示后面將要安裝到的目標位置,后面編譯gcc時也要用到這個路徑,執行完成之后在當前目錄生成makefile文件,這時可以執行make(開始編譯),接着執行make test(編譯后安裝前的測試,為了省時間,我一般沒有執行這一步),最后執行make install(正式開始把編譯好的文件安裝到--prefix指定的位置).

    二:安裝mpfr-2.4.2.tar.bz2,方法同上,不過執行configure的具體參數是這樣的../mpfr-2.4.2/configure --prefix=/usr/local/mpfr-2.4.2 --with-gmp=/usr/local/gmp-4.3.2,它是要依賴前面的gmp.

    三:安裝mpc-0.8.1.tar.gz方法同上,不過執行configure的具體參數是這樣的../mpc-0.8.1/configure --prefix=/usr/local/mpc-0.8.1 --with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-2.4.2

  上面三個依賴庫安裝好后,就可以開始編譯安裝gcc-4.9.2.tar.gz了:

    四:其實步驟同安裝上面三個依賴庫是一樣的,還是執行configure的參數不同../gcc-4.9.2/configure --prefix=/usr/local/gcc-4.9.2 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-2.4.2 --with-mpc=/usr/local/mpc-0.8.1,這里的參數是把上面的三個依賴庫加上去了,執行完成之后同樣是生成makefile文件.

    五:執行make -j4  (-j4是表示啟動四線程,可以充分發揮四核CPU的性能,網上有人用四核CPU開啟4線程編譯只花了半個小時,不過我的電腦配置差,只執行的make花了三個多小時間,呵呵).

    六:make test (我為了省時間,基本上省略這一步了)

    七:make install (開始安裝)

    至此就算編譯安裝完成了.

  其實在上面執行第五步的時候,會遇到這樣的錯誤:“configure: error: cannot compute suffix of object files: cannot compile”,網上調查得到的原因是找不到上面三個依賴的lib位置,所以要在執行第五步之前,先執行這樣一條指令export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gmp-4.3.2/lib:/usr/local/mpc-0.8.1/lib:/usr/local/mpfr-2.4.2/lib,這樣就把三個依賴庫就加入到了環境變量中,再編譯的時候就不會報錯了.

  裝完后,查看一下版本

[guo@CentOS 桌面]$ g++49 -v
使用內建 specs。
COLLECT_GCC=g++49
COLLECT_LTO_WRAPPER=/usr/local/gcc-4.9.2/libexec/gcc/i686-pc-linux-gnu/4.9.2/lto-wrapper
目標:i686-pc-linux-gnu
配置為:../gcc-4.9.2/configure --prefix=/usr/local/gcc-4.9.2 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-2.4.2 --with-mpc=/usr/local/mpc-0.8.1
線程模型:posix
gcc 版本 4.9.2 (GCC)
[guo@CentOS 桌面]$ gcc49 -v
使用內建 specs。
COLLECT_GCC=gcc49
COLLECT_LTO_WRAPPER=/usr/local/gcc-4.9.2/libexec/gcc/i686-pc-linux-gnu/4.9.2/lto-wrapper
目標:i686-pc-linux-gnu
配置為:../gcc-4.9.2/configure --prefix=/usr/local/gcc-4.9.2 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-2.4.2 --with-mpc=/usr/local/mpc-0.8.1
線程模型:posix
gcc 版本 4.9.2 (GCC)
[guo@CentOS 桌面]$


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM