CentOS編譯安裝GCC 4.9.2成功

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

準備工做,c++

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

  下載下面三個依賴的安裝包,這三個包的版本在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.bz2ui

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

編譯:ip

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

    一:解壓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++49COLLECT_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線程模型:posixgcc 版本 4.9.2 (GCC) [guo@CentOS 桌面]$ gcc49 -v使用內建 specs。COLLECT_GCC=gcc49COLLECT_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線程模型:posixgcc 版本 4.9.2 (GCC) [guo@CentOS 桌面]$

相關文章
相關標籤/搜索