歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux升級GCC 4.8.1清晰簡明教程(Ubuntu 12.04 64位版為例)

Linux升級GCC 4.8.1清晰簡明教程(Ubuntu 12.04 64位版為例)

日期:2017/2/28 14:34:05   编辑:Linux教程

前言:

上次在CentOS 6上升級GCC 4.7.2的教程(http://www.linuxidc.com/Linux/2012-12/76635.htm)由於本人但是能力有限,而且時間比較緊,很多東西沒有深究,導致教程裡面有一些冗雜和不太正確或不能通用的部分,(還被師妹說我誤導她,冤枉啊),向大家道歉。

這次我在Ubuntu 12.04 LTS 64位版上更新gcc,發現了原來的一些問題,這次沒有什麼時間上的壓力,我比較認真地去查閱了官方文檔,也參考了一些網上的帖子,對整個升級過程在依賴包的安裝、不同Linux流派、32和64位下的區別和共同點有了更深的認識。

現總結如下:

PS:不標注出處的轉載是可恥的。

(我整理了Ubuntu 12.04下的shell命令,如果你很忙的話,可以只把裡面的shell代碼復制出來執行)

基本過程:
這裡對整個流程做一個概要性的介紹,讓大家在做每一件事情的時候做到心中有數。

1,安裝依賴庫和工具
根據官方文檔,如果只是為了編譯安裝而不是去修改gcc,那麼所需要的庫和工具並不是很多。
需要強調的有兩點:
1)需要一個c++編譯器,也就是說如果只有gcc而無g++,那麼是無法完成這次編譯的;
2)在64位系統上如果想要編譯出32位的程序的話,需要額外安裝相應的庫(默認開啟)。

2,配置(configure)
配置我們編譯出的gcc所支持的語言,目標環境(是否為交叉編譯器),依賴庫路徑(一定條件下可省略,下詳),編譯結果安裝到哪裡……配置程序會根據這些信息生產Makefile文件,供下一步使用。

3,編譯(make)
根據configure生成的Makefile編譯出我們的gcc和相應的lib如libstdc++等。

流程:
請大家多多查閱官方文檔:http://gcc.gnu.org/install/
一,安裝依賴庫與工具
工具:
支持c++98的編譯器(g++),make,perl,解壓工具(tar、gzip等),Binutils(僅部分情況下需要)等。
這裡一般不需要太擔心,因為現在的linux系統在安裝完成後,這裡面的大部分工具就已經就位了,唯一需要注意的就是c/c++環境。
如果確定本機已經安裝了gcc和g++那麼可以跳過這一部分。

Unbutu下可以使用:

apt-get install build-essential
來方便地搞定,而且它還安裝了一些其他必須的庫如glibc(Ubuntu下叫libc)。

其他一些Linux平台沒有build-essential這個包,稍微麻煩一點。

因為安裝g++和gcc,必然會安裝libstdc++和glibc,所以建議通過:

apt-get install gcc g++ make libc6-dev

的方式來安裝,以避免一些惡心的問題,還可以確保相應工具的安裝。


庫:
根據官方文檔,如果只是安裝不修改的話只需要5個依賴第三方庫。
這個5個庫分2類,一類(gmp,mpc,mpfr)是可以在gcc編譯過程中自動編譯的(先自行下載了源碼並正確放置),另一類是需要獨立安裝的(isl,cloog)。
操作:
1,檢查它們是否已經安裝了:
如果要檢查XXX庫是否安裝,使用:
locate libXXX

來查找,如果查找到libXXX.so文件,那麼就說明這個庫已經安裝了。(關於庫搜索路徑的問題見 http://www.linuxidc.com/Linux/2012-12/76633.htm )

2,安裝(如果第一步發現某個庫已經裝了自然就不用再裝啦):

對於gmp,mpc,mpfr三個庫,可以在gcc的解壓根目錄下運行

./contrib/download_prerequisites

來下載並解壓,並創建符號連接。(如果下載緩慢,可以修改腳本中的下載地址到其他gnu鏡像,注意修改版本號,根據官網的說明更高的版本不會引發其他問題)

根據gcc的編譯規則:如果在gcc的根目錄下有gmp,mpc,mpfr這幾個目錄,那麼在make gcc的時候,它們會自動make,不需要手動安裝。

對於isl和cloog這個兩個庫,可以自己編譯(編譯時請詳細閱讀官方文檔),但是建議直接從源上面下載。(因為cloog依賴了gmp和isl,這就是說如果你要編譯會非常麻煩。)

例如:

apt-get intall libisl-dev libcloog-isl3

在具體環境下可能需要修改庫的名字,這一點可以通過在輸入完libisl或libcloog後按兩下Tab鍵來查看,後同。

3,安裝其他庫:

如果希望在64位系統下也能編譯出32位的程序,那麼還需要32位的運行庫,而這些庫在64位系統下默認是不會安裝的。

Ubuntu下有簡單的方法,可以使用:

apt-get install gcc-multilib g++-multilib

Fedora下可以使用:

apt-get install glibc-devel.i686 libstdc++-devel.i686

Ubuntu下也可以借鑒這個模式,修改包名安裝相應的包。

Copyright © Linux教程網 All Rights Reserved