爲了在Ubuntu下安裝那使人悲催的GCC,小弟但是絞盡腦汁,連幹三天。。。當我搞清楚那些破軟件m4,gmp mpfr,mpc等之間的依賴關係,依照強大的度娘提示下,安裝了一遍又一邊一邊又一邊·····它就是不成!shit!就當俺不得不作出拋棄GCC的念頭之時,又是度娘!
原來Ubuntu11.04自帶GCC的!!! 在此建議各位大蝦,在安裝GCC以前,先check一下你的Linux中是否自帶了GCC。
php
下面是小弟,在這悲催的三天所學到如何在Ubuntu下安裝GCC的過程:
安裝過程
第一步,從網站http://gcc.gnu.org 上下載文件gcc-
第二步,將該文件拖至tmp目錄下。而後解壓縮,在命令行tar vxjf gcc-
解壓後你能夠看到在tmp目錄下有gcc-
第三步,對源文件進行配置,用命令
mkdir gcc-build
cd gcc-build
../gcc-4.6.0/configure --prefix=/usr/local/gcc-4.6.0 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++
提醒信息:configure: error: Building GCC requires GMP 4.2+, MPFR
說明要安裝gcc須要GMP、MPFR、MPC這三個庫,因而又從網上下了三個庫的壓縮包。因爲MPFR依賴GMP,而MPC依賴GMP和MPFR,因此要先安裝GMP,其次MPFR,最後纔是MPC。這裏三個庫我用的版本分別是gmp
先開始安裝GMP。解壓GMP的壓縮包後,獲得源代碼目錄gmp-
../gmp-
這裏--prefix選項表明要將該庫安裝在哪裏,我是裝在/usr/local/gmp-
在網上查了一下這個問題的解決辦法,輸入如下命令進行安裝:
sudo aptitude install build-essential m4
或在系統自帶的軟件中心尋m4
再經歷這一切以後在度孃的幫助下,終於明白其實正確的安裝過程以下:
linux下軟件的「安裝」通常是須要3個步驟:
即configure,make和make install這三個命令編譯,而安裝的任何一個命令有疑問或者想查看命令相關的參數,均可以在命令後加」 --help」參數來查看安裝命令須要的參數。
其次須要說明的是,因爲可能存在任何可能的狀況,configure,make和make install這三個命令都有可能報錯,若是出錯,終端會給出錯誤的信息,也就是error的提示,你須要針對錯誤的類型去解決安裝中存在的問題,有問題的話能夠在baidu或者google上搜搜出錯信息看看,應該有你要的答案,可是建議在google上搜。Linux是開源的,全世界的客戶多不勝數。遇到和你一樣的問題的人必定存在。因此,有什麼error有什麼問題,儘管找度娘,股溝。上面的資料十分的多。也能夠到相關的Ubuntu論壇上去找,例如:http://forum.ubuntu.org.cn/index.php?sid=c9ccb2d7adcf8fdb78ac99d75581a332 好了,繼續話題。。。。。
1,安裝GCC須要四個相關的軟件:
m4(即an implementation of the traditional Unix macro processor)、
gmp(即GNU Multiple Precision Arithmetic Library)、
mpfr(即multiple-precision floating-point computations with correct rounding)
mpc(即C library for the arithmetic of complex numbers with arbitrarily high precision and correct rounding
他們的依賴關係如右圖-----------
按照從內圈到外圈的順序安裝(gmp的安裝須要m4,而mpfr依賴gmp,而mpc依賴gmp和mpfr,因此要先安裝m4,其次裝gmp,再其次mpfr,最後是mpc)
我安裝的後三個庫的版本分別是
(I)
m4的安裝,首先須要說明的是,若是不安裝m4,在安裝gmp的時候系統會提示「m4: gmp configure: error: No usable m
tar –zxvf m4.tar.gz 先解壓縮,而後進入到m4目錄
./configure CC=」cc」
make
make install
因爲沒有指定安裝目錄,所以安裝好後,能夠查看默認的/usr/local/bin目錄下,有一個m4的可執行文件,網上資料說這是一個宏處理器。
(II) gmp的安裝,後面的安裝都是裝到了指定目錄下,因此我都是用root超級用戶操做的,用su命令切換到超級用戶。因爲我是將gmp,mpfr和mpc分別安裝到了/usr/local/gmp432,/usr/local/mpfr242和/usr/local/mpc082目錄下,所以須要先進入/usr/local/目錄下,以超級用戶運行
mkdir gmp432 mkdir是建立目錄命令,即先建立安裝目錄,你也能夠在任意目錄下建
mkdir mpfr242
mkdir mpc081
完成之後,進入到gmp-
tar –vxzf gmp-
cd gmp-
./configure --prefix=/usr/local/gmp432
make
make check
make install
安裝好後,能夠查看/usr/local/gmp432目錄下有三個文件夾
(III) mpfr的安裝,
tar –vxzf mpfr-
cd mpfr-
./configure --prefix=/usr/local/gmp432 --with-gmp=/usr/local/gmp432
make
make check
make install
mpc的安裝,(仍然在超級用戶下操做),一樣,不知道怎麼安裝的能夠看一下解壓縮後的INSTALL文件,
tar –zxvf mpc-
cd mpc-
./configure --prefix=/usr/local/mpc-
make
make check
make install
安裝好這三個庫以後,就能夠正式開始安裝gcc了。
與此前同樣,在gcc解壓後的文件夾的同級目錄下,建一個編譯gcc的臨時目錄:gcc-build。
cd gcc-build
進入該目錄後配置安裝選項:
../gcc-4.6.0/configure --prefix=/usr/local/gcc-4.6.0 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++
gcc的配置選項有不少,具體能夠參考gcc源文件目錄下的安裝說明。這裏只安裝了c和c++的編譯器。而後開始make編譯。原本覺得就能夠大功告成了,結果在編譯途中又出現了錯誤:error while loading shared libraries: libmpc.so.2: cannot open shared object file: No such file or directory
在網上找到了解決方法,須要添加環境變量LD_LIBRARY_PATH以指出前面三個庫的位置,鍵入如下命令:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-
而後運行
make
而後就耐心等待。。。。。。。。。
在通過漫長的2小時等待後,終於編譯完成。在安裝說明裏面還有測試這一步,不過那是可選的,我也沒耐心去測試了。直接make install安裝,至此gcc就所有安裝完成了。不過目前還不能使用新版本的gcc,由於新版的可執行文件還沒加到命令的搜索路徑中。在這裏我爲新版的gcc和g++命令分別創建了一個軟連接。進入/usr/bin目錄後,鍵入以下命令創建軟連接。
sudo ln -s /usr/local/gcc-
sudo ln -s /usr/local/gcc-4.5.0/bin/g++ g++45
這樣我使用新版本gcc的時候就能夠用gcc45和g++45命令,同時也可以使用原來的gcc編譯程序。固然這裏也能夠直接將/usr/bin目錄下gcc,g++命令從新連接到新版本的gcc可執行文件。在正式使用以前還有最後一個工做要作,就是將前面安裝的三個庫的路徑加進環境變量LD_LIBRARY_PATH中,否則在編譯程序的時候會出錯。因爲我不想每次編譯程序都生成環境變量,因此須要編輯/etc目錄下的bash.bashrc文件配置shell環境。在這個文件中添加如下語句:
LD_LIBRARY_PATH=:/usr/local/mpc-
export LD_LIBRARY_PATH
保存重啓系統後,就可使用新裝的gcc了。
須要說明的是,gcc的配置選項有不少,具體能夠參考gcc源文件目錄下的安裝說明。這裏只安裝了c和c++的編譯器。而後開始make編譯。
在正式使用以前還有最後一個工做要作,就是將前面安裝的三個庫的路徑加進環境變量LD_LIBRARY_PATH中,否則在編譯程序的時候會出錯。因爲我不想每次編譯程序都生成環境變量,因此須要編輯/etc目錄下的bash.bashrc文件配置shell環境。在這個文件中添加如下語句:
LD_LIBRARY_PATH=:/usr/local/mpc-
export LD_LIBRARY_PATH
保存重啓系統後,就可使用新裝的gcc了。
須要說明的是,若是make出錯,須要從新configure的話,先運行一下make distclean來清除make的信息,再從新configure。
解壓縮*.tar.gz的命令是tar –zxvf *.tar.gz
解壓縮*.tar.bz2的命令是tar -jxvf *.tar.bz2
安裝完成好之後能夠用 which gcc查看是否安裝好,命令運行後終端顯示出安裝gcc的路徑。
打完,收工·······