首頁 > 軟體

CentOS 6.6原始碼編譯升級GCC至4.8.2

2020-06-16 17:53:50

升級前提

原始碼編譯需要至少要有一個可用的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

GCC 的詳細介紹請點這裡
GCC 的下載地址請點這裡

本文永久更新連結地址http://www.linuxidc.com/Linux/2015-09/122564.htm


IT145.com E-mail:sddin#qq.com