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

升級前提

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

能夠用過yum自動安裝或者手動下載rpm包安裝。shell

經過yum能夠看到至少須要下面這些安裝包,因此能夠到許多rpm package站點中搜索下載相應的rpm包,不過版本要搞對了,這個yum搜出來的版本是針對4.4.7的。因此須要什麼版本gcc就尋找什麼版本對應的依賴包。如今的rpm站點都會說明這個軟件包依賴哪些軟件包,被哪些軟件包依賴,很是方便,不過找起來仍是比較耗時的。apache

編譯安裝GCC4.8.2

下載gcc4.8.2源碼包bash

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編譯時一塊兒編譯,你也能夠本身去下載依賴包。curl

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

打開上面的download_prerequisites能夠看到,它首先下載了3個包,因此當發現腳本卡在下載的地方可能就是沒法訪問的緣由了,這是須要去找一個新的下載地址,方法很簡單,google文件名就能夠找到不少。ui

開始編譯gccgoogle

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版本沒有變化,就再執行如下啓動腳本。url

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

安裝完以後的問題

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

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++等也作類似的處理3d

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

執行

1 ./configure --help 

能夠看到確實是有這樣的選項的

因此只須要在configure的時候帶上 --prefix=/usr 就能夠將gcc編譯安裝到usr下了 

相關文章
相關標籤/搜索