CentOS6.6源碼編譯升級GCC至4.8.2


升級前提

源碼編譯需要至少要有一個可用的gcc編譯器。

可以用過yum自動安裝或者手動下載rpm包安裝。

通過yum可以看到至少需要下面這些安裝包,所以可以到許多rpm package站點中搜索下載相應的rpm包,不過版本要搞對了,這個yum搜出來的版本是針對4.4.7的。所以需要什么版本gcc就尋找什么版本對應的依賴包。現在的rpm站點都會說明這個軟件包依賴哪些軟件包,被哪些軟件包依賴,非常方便,不過找起來還是比較耗時的。

編譯安裝GCC4.8.2

下載gcc4.8.2源碼包

1 curl -O ftp://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.gz;

首先需要下載gcc安裝所依賴的mpc,mpfr,gmp包,gcc自帶了一個腳本幫我們下載並建立好鏈接等gcc編譯時一起編譯,你也可以自己去下載依賴包。

1 tar zxf gcc-4.8.2.tar.gz
2 cd gcc-4.8.2 
3 ./contrib/download_prerequisites

打開上面的download_prerequisites可以看到,它首先下載了3個包,所以當發現腳本卡在下載的地方可能就是無法訪問的原因了,這是需要去找一個新的下載地址,方法很簡單,google文件名就可以找到很多。

開始編譯gcc

mkdir gcc-build-4.8.2
cd gcc-build-4.8.2
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
make
make install

安裝完成后如果發現gcc -v版本沒有變化,就再執行以下啟動腳本。

1 source /etc/profile
2 source ~/.bash_profile

安裝完之后的問題

安裝完之后雖然敲gcc g++ c++ 等版本都更新到了4.8.2但其實電腦里里面至少存在兩個版本的gcc

whereis或者where可以看到有多個gcc文件,which命令可以看到命令gcc對應的是usr/local/bin/gcc,而原來的gcc執行文件在/usr/bin/gcc,執行/usr/bin/gcc -v可以看到gcc的版本還是4.4,這雖然問題不大,但有些shell腳本或者Makefile中直接寫的是gcc的絕對路徑,所以很有可能會使用舊的gcc版本去編譯,從而導致失敗。所以還是需要將原來的gcc覆蓋掉。最開始想的辦法是將、usr/bin/gcc軟鏈接到usr/local/bin/gcc,對於g++,c++等也做相似的處理

這種方式看似解決了問題,但總覺得不靠譜,直到最近編譯apache thrift發現還是不太對。所以考慮在安裝gcc的時候是否可以指明安裝路徑。

執行

1 ./configure --help 

可以看到確實是有這樣的選項的

所以只需要在configure的時候帶上 --prefix=/usr 就可以將gcc編譯安裝到usr下了 

 


免責聲明!

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



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