服務器上安裝的GCC版本過舊,已經不滿足個人使用的版本需求,故決定對其進行升級操作,由當前版本3.4.6升級到4.8.2,然受權限制約,只能安裝到個人目錄,因此如果您的服務器可以連接外網,並且有root或者sudo權限的話,可使用自助安裝服務,爲節省您的寶貴時間,可忽略本文。
所謂“工慾善其事必先利其器”,在權限受限,並不能連接外網的情況下,操作Linux環境的程序安裝着實蛋疼,可沒辦法,系統需要。當祖國需要你的時候,你要站出來大聲說,“請找別人!”,麻煩歸麻煩,結果是好的。
準備好GCC的壓縮包gcc-4.8.2.tar.gz(105MB左右)後不再囉嗦,進入主題:
1、查看系統環境和gcc版本,確認當前系統是否已經可以滿足自身需要
$lsb_realease -a
$gcc -v
2、解壓gcc-4.8.2.tar.gz到當前目錄下
$tar -zvxf gcc-4.8.2.tar.gz
3、進入gcc目錄,查看編譯需要的依賴文件
$cd gcc-4.8.2/
$vim ./contrib/download_prerequisites
4、根據上述地址,分別下載mpfr/gmp/mpc三個文件,並解壓安裝。由於mpc依賴於mpfr和gmp,mpfr依賴於gmp,故安裝順序依次爲gmp、mpfr、mpc。
5、編譯安裝gmp
$tar -jvxf ~/gmp-4.3.2.tar.bz2
$cd gmp-4.3.2
$./configure --prefix=~/gcclib/gmp432(自定義配置路徑)
$make && make install
6、編譯安裝mpfr
$tar -jxvf ~/mpfr-2.4.2.tar.bz2
$cd mpfr-2.4.2/
$./configure --prefix=~/gcclib/mpfr242 --with-gmp=~/gcclib/gmp432/ (依賴於gmp)
$make && make install
7、編譯安裝mpc
$tar -zxvf ~/mpc-0.8.1.tar.gz
$cd mpc-0.8.1/
$./configure --prefix=~/gcclib/mpc081 --with-gmp=~/gcclib/gmp432/ --with-mpfr=~/gcclib/mpfr242/ (依賴於gmp與mpfr)
$make && make install
8、編譯安裝gcc
$tar -zvxf ~/gcc-4.8.2.tar.gz
$cd gcc-4.8.2
$./configure --prefix=~/gcc482 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=~/gcclib/gmp432/ --with-mpfr=~/gcclib/mpfr242/ --with-mpc=~/gcclib/mpc081/(注意千萬不要拼寫錯誤,在這吃了很多虧,導致浪費很多時間,解決各種報錯,反反覆覆,最終發現是參數寫錯,如"multilib"誤寫成"mutilib",參數這樣寫沒錯的,後面的--with指定gcc依賴包的路徑)
--enable-threads=posix//可用線程
-disable-checking//禁用檢查
--disable-multilib//默認gcc 能在32位系統上將代碼編譯成64位程序,或者在64位系統上編譯成32位程序,如果加上這個編譯選項則表示關閉這個gcc的交叉編譯功能。
--enable-languages //指定 gcc 能編譯哪些語言的文件,每種語言用逗號分隔, 例如 c,c++,java
詳細的參數介紹可以在官網看到:https://gcc.gnu.org/install/configure.html
$如果此時執行"make"命令的話,那後果會相當的痛苦,默認安裝情況,所有lib共享庫都會被放到系統目錄下如64位的/usr/lib64/,而我們手動指定目錄的形式,系統在編譯構建的時候是找不到的,就是說GCC找不到之前我們安裝的三個lib庫,so我們這樣做,即使沒權限,仍可以建立全局的臨時路徑。
$export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/gcclib/gmp432/lib:~/gcclib/mpfr242/lib:~/gcclib/mpc081/lib(保證原有的參數正確,加上新的共享路徑,用冒號分隔)
$make(別傻等在屏幕前,聽哥一句勸,這個過程的時間你可以欣賞一Hollywood大片啦,至少1.5小時,當然如果你的服務器牛逼的不行超級快請忽略)
$make install
$~/gcc482/bin/gcc -v (查看安裝版本,驗證是否安裝成功)
9、Complete!
在安裝過程中,遇到的奇葩問題不少於10個,這裏沒有記錄,因爲沒有原圖,說服力不夠,而且記錄比較麻煩,所以如果你在安裝過程中遇到什麼問題,仔細看看錯誤提示,谷歌一下,就很容易解決,當然特別歡迎你留言,很樂意幫你解決。關於自安裝GCC的使用歡迎您閱讀下一篇博文,MonaServer的安裝使用。