suse的安裝參考:http://blog.csdn.net/cloudskyfhx/article/details/17660607 有些錯誤處理見本文黃色部分
CentOS 6.4 編譯安裝 gcc 4.8.1
轉自:https://www.cnblogs.com/codemood/archive/2013/06/01/3113200.html
今天在isocpp上看到“GCC 4.8.1 released, C++11 feature complete”這個消息,非常興奮。終於有一個全面支持C++11語言特性的編譯器了!
當然了,gcc僅僅是語言特性上全面支持C++11,libstdc++貌似還沒有完全跟上,不過我已經挺滿足了,至少可以去嘗試各種特性了。另外,之前也有消息說Clang功能上也100%支持C++11了,但是內部還在做測試,Clang3.3的release版據說6月5號正式發布,最近對於C++來說大事真多啊,很期待!
今天下午看到這個消息,晚上就實在忍不住了,趕緊把最新的gcc下載下來編譯安裝起來,下面介紹下安裝步驟:
安裝之前,還是提醒下大家:一些基本的准備工作我就不說了,比如得裝個Linux(CentOS,Ubuntu等等),然后裝上基本的編譯環境,用較老的編譯環境編譯新的編譯器,這叫自舉(bootstrap)。如果編譯的過程,提示出錯,就按照提示去把環境裝好,不再詳細說明。
1、下載gcc 4.8.1源碼包:
http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.8.1/gcc-4.8.1.tar.bz2
我是虛擬機里面裝的Linux,我嫌wget太慢,所以自己在Windows上用迅雷下好,然后共享到Linux中。
2、解壓:
tar -jxvf gcc-4.8.1.tar.bz2
3、下載編譯所需的依賴包:
這個步驟有兩種方式完成:
a) 如果Linux有網絡連接,直接這樣:
cd gcc-4.8.1
./contrib/download_prerequisites
cd ..
b) 如果Linux沒有網絡連接(我主機和虛擬機是Host-only,不能聯網,所以另外想辦法),則用Windows上網下載這幾個包:
ftp://ftp.gnu.org/gnu/gmp/gmp-4.3.2.tar.bz2
http://www.mpfr.org/mpfr-2.4.2/mpfr-2.4.2.tar.bz2
http://www.multiprecision.org/mpc/download/mpc-0.8.1.tar.gz
有人問,一定要下載幾個版本嗎?下載最新的版本行不行?我沒試過,也不知道,我是按照gcc-4.8.1/contrib/download_prerequisites腳本里面的版本下載的。既然里面已經說了這幾個版本,那我就嚴格按照它的要求來做。
然后解壓並移動到gcc-4.8.1下面:
tar -xjf gmp-4.3.2.tar.bz2
tar -xjf mpfr-2.4.2.tar.bz2
tar -xzf mpc-0.8.1.tar.gz
mv gmp-4.3.2 gcc-4.8.1/gmp
mv mpfr-2.4.2 gcc-4.8.1/mpfr
mv mpc-0.8.1 gcc-4.8.1/mpc
這樣的做法好處是,不用單獨編譯gmp、mpfr和mpc三個包,放在gcc源碼下面一起編譯(事實上這也是gcc-4.8.1/contrib/download_prerequisites腳本的做法,個人感覺更簡潔些)。
注意:我的是suse linux sp3,使用上面的方法會報錯,我是直接下載gmp、mpfr、mpc,然后cd 各個目錄,./configure, make && make install來安裝的。注意:configure沒有使用任何參數。
4、新建目錄用於存放編譯結果:
mkdir gcc-build-4.8.1
5、進入新目錄,並執行configure命令,產生makefile:
cd gcc-build-4.8.1
../gcc-4.8.1/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
具體選項不多解釋,大家可以自己查看,我只用到c和c++,所以只編譯這兩種語言的編譯器。
6、編譯:
make -j4
我是i5四核,所以開4個線程同時編譯,要是有8核就更爽了~我在虛擬機里面花了30分鍾不到的時間,不算太慢了。
我安裝時遇到的錯誤:
error: cannot compute suffix of object files: cannot compile
解決辦法:
因為我的gmp, mpfr, mpc都是使用默認參數安裝的,沒指定任何參數
./configure
make
make install
所以直接使用下面的命令設置環境變量就可以了:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
如果安裝時指定了安裝目錄,使用類似下面的命令:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/gcc-4.6.3/mpc-0.9/mpc_install/lib:/opt/gcc-4.6.3/gmp-5.0.4/gmp_install/lib:/opt/gc
我的解決方法是:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/
因為我看到gmp、mpfr、mpc都在/usr/local/lib下面:
s /usr/local/lib
gcc libgmp.a libgmp.la libgmp.so libgmp.so.10 libgmp.so.10.1.3 libmpc.a libmpc.la libmpc.so libmpc.so.3 libmpc.so.3.0.0 libmpfr.a libmpfr.la libmpfr.so libmpfr.so.4 libmpfr.so.4.1.2
此外:
編譯時的錯誤處理。
configure: error: C++ compiler missing or inoperational make[2]: \*** [configure-stage1-libcpp] Error 1 make[2]: Leaving directory `/home/liukk/gcc-4.8.1' make[1]: \*** [stage1-bubble] Error 2 make[1]: Leaving directory `/home/liukk/gcc-4.8.1' make: \*** [all] Error 2
解決辦法:
安裝如下內容:
zypper install gcc-c++
7、安裝:
sudo make install
8、大功告成,檢查版本:
g++ --version
g++ (GCC) 4.8.1
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
【參考文章】:
http://rritw.com/a/caozuoxitong/OS/20130407/335815.html
http://www.lainme.com/doku.php/blog/2012/06/%E5%9C%A8centos_5%E4%B8%8A%E7%BC%96%E8%AF%91gcc_4.7
http://www.cnblogs.com/chuncn/archive/2010/10/15/1851853.html