為了在Ubuntu下安裝那令人悲催的GCC,小弟可是絞盡腦汁,連干三天。。。當我搞清楚那些破軟件m4,gmp mpfr,mpc等之間的依賴關系,依照強大的度娘提示下,安裝了一遍又一邊一邊又一邊·····它就是不成!shit!就當俺不得不做出拋棄GCC的念頭之時,又是度娘! <!--[if !vml]-->
<!--[endif]--> 原來Ubuntu11.04自帶GCC的?。?! 在此建議各位大蝦,在安裝GCC之前,先check一下你的Linux中是否自帶了GCC。 <!--[if !vml]-->

<!--[endif]-->
下面是小弟,在這悲催的三天所學到如何在Ubuntu下安裝GCC的過程:
安裝過程
第一步,從網站http://gcc.gnu.org 上下載文件gcc-4.6.0.tar.bz2
第二步,將該文件拖至tmp目錄下。然后解壓縮,在命令行tar vxjf gcc-4.1.1.tar.bz2,
解壓后你可以看到在tmp目錄下有gcc-4.6.0文件

第三步,對源文件進行配置,用命令
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++
編譯錯誤提醒:

<!--[if !vml]--><!--[endif]-->
提醒信息:configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+.
說明要安裝gcc需要GMP、MPFR、MPC這三個庫,于是又從網上下了三個庫的壓縮包。由于MPFR依賴GMP,而MPC依賴GMP和MPFR,所以要先安裝GMP,其次MPFR,最后才是MPC。這里三個庫我用的版本分別是gmp5.0.1,mpfr2.4.2和mpc0.8.1。
先開始安裝GMP。解壓GMP的壓縮包后,得到源代碼目錄gmp-5.0.1。在該目錄的同級目錄下建立一個臨時的編譯目錄,這里命名為gmp-build。然后開始配置安裝選項,進入gmp-build目錄,輸入以下命令進行配置:
../gmp-5.0.1/configure --prefix=/usr/local/gmp-5.0.1
這里--prefix選項代表要將該庫安裝在哪里,我是裝在/usr/local/gmp-5.0.1目錄下,后面的安裝都會用到這個選項。不過這里又出現問題了,系統提示缺少m4: gmp configure: error: No usable m4 in $PATH or /usr/5bin。m4是一個宏處理器。
在網上查了一下這個問題的解決辦法,輸入以下命令進行安裝:
sudo aptitude install build-essential m4
或在系統自帶的軟件中心尋m4

<!--[if !vml]--><!--[endif]-->
再經歷這一切之后在度娘的幫助下,終于明白其實正確的安裝過程如下:
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
下載3個軟件包及安裝參考http://www.comdyn.cn/from-web/68-server-setup/164-centos-48-gcc450.html
他們的依賴關系如右圖-----------
按照從內圈到外圈的順序安裝(gmp的安裝需要m4,而mpfr依賴gmp,而mpc依賴gmp和mpfr,所以要先安裝m4,其次裝gmp,再其次mpfr,最后是mpc)
我安裝的后三個庫的版本分別是 <!--[if !vml]--><!--[endif]-->

<!--[if !supportLists]-->(I) <!--[endif]-->m4的安裝,首先需要說明的是,如果不安裝m4,在安裝gmp的時候系統會提示“m4: gmp configure: error: No usable m4 in $PATH or /usr/5bin”的錯誤。因此首先需要安裝m4,命令如下
tar –zxvf m4.tar.gz 先解壓縮,然后進入到m4目錄
./configure CC=”cc”
make
make install
由于沒有指定安裝目錄,因此安裝好后,可以查看默認的/usr/local/bin目錄下,有一個m4的可執行文件,網上資料說這是一個宏處理器。
<!--[if !supportLists]-->(II) <!--[endif]-->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-4.3.2.tar.gz所在的目錄下,開始安裝gmp,
tar –vxzf gmp-4.3.2.tar.bz2 再壓縮,然后進入到gmp-4.3.2目錄
cd gmp-4.3.2 (不知道怎么安裝的可以看一下解壓縮后該目錄下的INSTALL文件)
./configure --prefix=/usr/local/gmp432
make
make check
make install
安裝好后,可以查看/usr/local/gmp432目錄下有三個文件夾
<!--[if !supportLists]-->(III) <!--[endif]-->mpfr的安裝,
tar –vxzf mpfr-2.4.2.tar.bz2 先解壓縮,然后進入到mpfr-2.4.2目錄
cd mpfr-2.4.2
./configure --prefix=/usr/local/mpfr432 --with-gmp=/usr/local/gmp432
make
make check
make install
mpc的安裝,(仍然在超級用戶下操作),同樣,不知道怎么安裝的可以看一下解壓縮后的INSTALL文件,
tar –zxvf mpc-0.8.1.tar.gz 先解壓縮,然后進入到mpc-0.8.2目錄
cd mpc-0.8.1
./configure --prefix=/usr/local/mpc-0.8.1 --with-gmp=/usr/local/gmp432 --with-mpfr=/usr/local/mpfr242
make
make check
make install
安裝好這三個庫之后,就可以正式開始安裝gcc了。
與此前一樣,在gcc解壓后的文件夾的同級目錄下,建一個編譯gcc的臨時目錄:gcc-build。
mkdir gcc-build
cd gcc-build
<!--[if !vml]--><!--[endif]-->

進入該目錄后配置安裝選項:
../gcc-4.6.0/configure --prefix=/usr/local/gcc-4.6.0 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++
--with-gmp=/usr/local/gmp-5.0.1 --with-mpfr=/usr/local/mpfr-2.4.2 --with-mpc=/usr/local/mpc-0.8.1
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-0.8.1/lib:/usr/local/gmp-5.0.1/lib:/usr/local/mpfr-2.4.2/lib
然后運行
make
然后就耐心等待。。。。。。。。。
在經過漫長的2小時等待后,終于編譯完成。在安裝說明里面還有測試這一步,不過那是可選的,我也沒耐心去測試了。直接make install安裝,至此gcc就全部安裝完成了。不過目前還不能使用新版本的gcc,因為新版的可執行文件還沒加到命令的搜索路徑中。在這里我為新版的gcc和g++命令分別建立了一個軟鏈接。進入/usr/bin目錄后,鍵入如下命令建立軟鏈接。
sudo ln -s /usr/local/gcc-4.5.0/bin/gcc gcc45
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-0.8.1/lib:/usr/local/gmp-5.0.1/lib:/usr/local/mpfr-2.4.2/lib:/usr/local/gcc-4.5.0/lib
export LD_LIBRARY_PATH
保存重啟系統后,就可以使用新裝的gcc了。
需要說明的是,gcc的配置選項有很多,具體可以參考gcc源文件目錄下的安裝說明。這里只安裝了c和c++的編譯器。然后開始make編譯。
在正式使用之前還有最后一個工作要做,就是將前面安裝的三個庫的路徑加進環境變量LD_LIBRARY_PATH中,不然在編譯程序的時候會出錯。由于我不想每次編譯程序都生成環境變量,所以需要編輯/etc目錄下的bash.bashrc文件配置shell環境。在這個文件中添加以下語句:
LD_LIBRARY_PATH=:/usr/local/mpc-0.8.1/lib:/usr/local/gmp-5.0.1/lib:/usr/local/mpfr-2.4.2/lib:/usr/local/gcc-4.5.0/lib
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的路徑。
<!--[if !vml]--><!--[endif]-->

打完,收工·······
本文轉自:http://ohyeahbbs.blog.51cto.com/1775490/568462
posted on 2012-07-28 22:56
王海光 閱讀(1665)
評論(1) 編輯 收藏 引用 所屬分類:
Linux