之前討論了很多關於編譯gcc的事情,都源自於當年在CentOS6.2上編譯gcc4.7.2的事情,簡直苦不堪言。
今天工作需要又要用CentOS了,用於gcc只用了更嚴格的開源協議GPL v3的問題,CentOS官方所能提供的最新gcc版本只能到4.4,要使用新特性,必須手動編譯新版本的gcc。
經過了幾年的學習和積累,今天上午輕松通過了當初惡魔般的centos上gcc編譯。
知識方面和配置選項含義方面的東西在我前幾篇關於編譯gcc的blog中有重復的介紹,這裡主要講操作步驟。
參考:http://www.linuxidc.com/Linux/2014-04/99583.htm
我所使用的系統是CentOS 6.4 64位版。
提醒:建議分配的硬盤空間大於10G,否則可能會出現編譯時遭遇磁盤空間不足的問題。
編譯步驟
1,安裝gcc,g++
yum install gcc g++
2,安裝靜態glibc
yum install glibc-static
3,安裝cloog和gmp開發版(因為需要手動編譯isl)
yum install cloog-ppl gmp-devel
4,下載編譯isl
(CentOS沒有提過rpm包,需要手動下載。另外它不是gnu的項目,為了方便起見,可以直接在gcc的官方資源下載地址找ftp://gcc.gnu.org/pub/gcc/infrastructure/)
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-0.11.1.tar.bz2
tar xfj isl-0.11.1.tar.bz2
cd isl-0.11.1
./configure
make
make install
5,下載並解壓gcc,創建編譯用臨時目錄
假設下載到了當前目錄,文件名為gcc-4.8.1.tar.bz2
tar xfj gcc-4.8.1.tar.bz2
cd gcc-4.8.1
mkdir build
5,下載gmp,mpfr,mpc源碼
通過自帶腳本一鍵搞定。
./contrib/download_prerequisites
其實gmp包可以不下載了;另外這3個項目都是gnu的,gnu鏡像中都提供下載,如果在官方網站下載比較慢,可以修改腳本中的下載地址為國內的鏡像,另外需要注意修改版本號為具體項目中的新版本號,因為download_prerequisites腳本中默認些的那些是最低要求,而有些舊版本項目維護方都已經不提過下載了。
6,配置gcc編譯選項
cd build
../configure --prefix=/usr --enable-languages=c,c++ --disable-multilib
不推薦加"--program-suffix=-4.8.1",然後通過配置連接的方式共存兩個版本的gcc。
7,編譯安裝
make -j4
make install
編譯之後的事
在CentOS下/usr/bin/gcc不同於Ubuntu,前者是一個可執行的二進制文件,後者是一個連接,連接到已經安裝的gcc版本如gcc-4.6.3,這一點可以用個調用ls -l來證實。
所以如果想要保留原來的gcc,就必須重命名它們,並且配置連接,這樣操作比較復雜,而且4.4.7的版本不同於4.6,它已經很落後了,而且沒有重大的調整,沒有必要保留。
更多CentOS相關信息見CentOS 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=14