源碼安裝GCC-4.9.2


轉自:https://www.cnblogs.com/succeed/p/6204438.html

 

首先安裝基礎包,安裝網絡依賴的時候要用

[root@localhost tmp]# yum -y install wget

一、源碼編譯安裝gcc-4.9.2

1、下載gcc源碼包

Download (HTTP): http://ftp.gnu.org/gnu/gcc/gcc-4.9.2/gcc-4.9.2.tar.gz

2、解壓壓縮包

[root@localhost tmp]# cd /usr/local/
[root@localhost local]# tar -zxvf gcc-4.9.2.tar.gz

3、下載編譯所需的依賴包

這個步驟有兩種方式完成:

a) 如果Linux有網絡連接,直接這樣:

[root@localhost local]# cd gcc-4.9.2
[root@localhost gcc-4.9.2]# ./contrib/download_prerequisites 

b) 如果Linux沒有網絡連接(我主機和虛擬機是Host-only,不能聯網,所以另外想辦法),則用Windows上網下載這幾個包:

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

然后解壓並移動到gcc-4.8.1下面:

tar -xjf gmp-4.3.2.tar.bz2

tar -xjf mpfr-2.4.2.tar.bz2

tar -xzf mpc-0.8.1.tar.gz

mv gmp-4.3.2 gcc-4.8.1/gmp

mv mpfr-2.4.2 gcc-4.8.1/mpfr

mv mpc-0.8.1 gcc-4.8.1/mpc

這樣的做法好處是,不用單獨編譯gmp、mpfr和mpc三個包,放在gcc源碼下面一起編譯(事實上這也是gcc-4.8.1/contrib/download_prerequisites腳本的做法,個人感覺更簡潔些)。第一種方法與第二種方法本人都有操作過,可以正常進行(第一種方式如果網絡不行往往容易失敗)。

4、編譯安裝gcc

[root@localhost gcc-4.9.2]# yum install -y gcc  gcc-c++  glibc-static libstdc++-static kernel-devel  //為避免出錯建議安裝此包
[root@localhost gcc-4.9.2]#  ./configure --prefix=/usr/local/gcc  --enable-bootstrap  --enable-checking=release --enable-languages=c,c++ --disable-multilib
[root@localhost gcc-4.9.2]# make
[root@localhost gcc-4.9.2]# make install 

編譯參數說明:

--prefix=/usr/local/ 指定安裝路徑

--enable-bootstrap 這里引用網上一些文獻對該參數的解釋:用第一次編譯生成的程序進行第二次編譯,然后用再次生成的程序進行第三次編譯,並且檢查比較第二次和第三次結果的正確性,也就是進行冗余的編譯檢查工作。 非交叉編譯環境下,默認已經將該值設為 enable,可以不用顯示指定;交叉編譯環境下,需要顯示將其值設為 disable。

--enable-checking=release 以軟件發布版的標准來對編譯時生成的代碼進行一致性檢查;設置該選項為 enable並不會改變編譯器生成的二進制結果,但是會導致編譯的時間增加;該選項僅支持gcc編譯器; 總體而言,對於上面這個選項,機器的硬件配置較低,以及不願等待太久編譯時間的童鞋,可以設置為 disable;但是這會增加產生未預期的錯誤的風險,所以應該慎用。 可以同時設置 --disable-bootstrap 與 --disable-checking,這對編譯過程的提速很有幫助。

--enable-threads=posix 顧名思義,啟用posix標准的線程支持 ,要讓程序能在符合POSIX規范的linux發布版上正確運行,就應該啟用該選項,取決於宿主或目標操作系統的類型,其它可用值有:aix,dec,solaris,win32等,如果你是其它的類UNIX系統,就需要設置相應的值。

--enable-languages=c,c++ 支持的高級語言類型和運行時庫,可以設置的所有語言包括 ada,c,c++,Fortran,java,objc,obj-c++,GO 等語言。這里只開啟了c和c++,因為支持的語言越多,就需要安裝越多的相應靜態與動態庫,還有五花八門的依賴庫,這會讓管理變得困難,體積也會變得龐大。

--disable-multilib 如果你的操作系統是32位,默認就已經設置為 disable,這意味着gcc僅能生成32位的可執行程序;如果你的操作系統是64位,默認就已經設置為 enable,這意味着用gcc編譯其它源文件時可以通過 -m32 選項來決定是否生成32位機器代碼。如果在64位系統上,要禁止生成32位代碼, 設置 --disable-multilib。

--enable-gather-detailed-mem-stats 允許收集詳細的內存使用信息,如果設置該參數為 enable,則將來編譯好的gcc可執行程序,可以通過 -fmem-report 選項來輸出編譯其它程序時的實時內存使用情況。

--with-long-double-128 指定 long double 類型為128位(16字節!);設置為 without,則 long double類型將為64位(8字節),這將與普通的 double 類型一樣。 基於 Glib 2.4以上版本編譯時,默認已經是128位。

5、后續操作

導出環境變量:

復制代碼
[root@localhost gcc-4.9.2]# gcc --version
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-16)
Copyright  2010 Free Software Foundation, Inc.
本程序是自由軟件;請參看源代碼的版權聲明。本軟件沒有任何擔保;
包括沒有適銷性和某一專用目的下的適用性擔保。
[root@localhost gcc-4.9.2]# vim /etc/profile.d/gcc.sh
export PATH=/usr/local/gcc/bin:$PATH
[root@localhost gcc-4.9.2]# source /etc/profile.d/gcc.sh
[root@localhost gcc-4.9.2]# gcc --version
gcc (GCC) 5.1.0
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
復制代碼

導出頭文件:

[root@localhost gcc-4.9.2]# ln -sv /usr/local/gcc/include/ /usr/include/gcc
"/usr/include/gcc" -> "/usr/local/gcc/include/"

導出庫文件:

 

[root@localhost gcc-4.9.2]# vim /etc/ld.so.conf.d/gcc.conf
/usr/local/gcc/lib64
[root@localhost gcc-4.9.2]# ldconfig -v
[root@localhost gcc-4.9.2]# ldconfig -p |grep gcc  //驗證是否導出 

 

 

到這里GCC也已經安裝完畢了。


免責聲明!

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



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