2021-05-12 14:32:11
CentOS 6.6原始碼編譯升級GCC至4.8.2
升級前提
原始碼編譯需要至少要有一個可用的gcc編譯器。
可以用過yum自動安裝或者手動下載rpm包安裝。
通過yum可以看到至少需要下面這些安裝包,所以可以到許多rpm package站點中搜尋下載相應的rpm包,不過版本要搞對了,這個yum搜出來的版本是針對4.4.7的。所以需要什麼版本gcc就尋找什麼版本對應的依賴包。現在的rpm站點都會說明這個軟體包依賴哪些軟體包,被哪些軟體包依賴,非常方便,不過找起來還是比較耗時的。
CentOS 6.6編譯安裝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下了
Linux升級GCC 4.8.1清晰簡明教學(Ubuntu 12.04 64位元版為例) http://www.linuxidc.com/Linux/2014-04/99583.htm
在CentOS 6.4中編譯安裝GCC 4.8.1 + GDB 7.6.1 + Eclipse 在CentOS 6.4中編譯安裝GCC 4.8.1 + GDB 7.6.1 + Eclipse
Ubuntu下Vim+GCC+GDB安裝及使用 http://www.linuxidc.com/Linux/2013-01/78159.htm
Ubuntu下兩個GCC版本切換 http://www.linuxidc.com/Linux/2012-10/72284.htm
CentOS6.5升級手動安裝GCC4.8.2 http://www.linuxidc.com/Linux/2015-01/112595.htm
本文永久更新連結地址:http://www.linuxidc.com/Linux/2015-09/122564.htm
相關文章