Ubuntu已經內置了gcc的安裝。但在不少時候,因爲須要特定版本的gcc,那麼須要本身安裝。c++
可是在安裝gcc4.9的時候,自動安裝了最新的版本,而我想要用4.9.2版原本進行編譯和驗證,卻沒法安裝上,只好本身進行源碼的編譯。shell
從這裏http://ftp.gnu.org/gnu 能夠下載最新的gcc版本,還須要同時下載gmp/mpc/mpfr,注意必定要是對應的版本,保險起見,選擇gcc編譯式提示的最低版本便可,版本過高有可能引發其它的問題。緩存
使用gcc源碼目錄下的.
/contrib/download_prerequisites進行下載,可保證版本的一致性,推薦使用。
採用下面的步驟進行編譯:多線程
tar -vxf gcc-4.9.3.tar.bz2 cd gcc-4.9.3 ./contrib/download_prerequisites #腳本本身主動下載依賴包 gmp, mpfr,mpc。 #也可以手動下載而後移到/gcc-4.9.0文件夾如下本身主動一塊兒安裝,或者自行先編譯安裝 ./configure sudo make install
編譯完了後,使用gcc -v檢查一下安裝的版本。ui
運行configure命令,產生makefile。spa
先建立build文件夾,編譯到此文件夾下:.net
mkdir build cd build ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
gcc的編譯時間比較長,在多核機器能夠啓用多線程。虛擬機中,建議預先增長CPU的數量與線程數一致。
線程
make -j4
4表示線程數,時間比較長,用多個線程更快code
sudo make install
若是之前編譯過,部分連接庫緩存可能版本較老。爲了清除之前的遺留文件,能夠先運行make clean。blog
若是須要在多個gcc版本間切換,參考:http://my.oschina.net/u/2306127/blog/538139
可是,這種方法只能切換gcc編譯器,所涉及到的引用庫如libgomp等不會切換,致使出現undefined symbol之類的錯誤。
在Ubuntu14.04,缺省編譯的gcc位於/usr/local/lib64目錄下,經過設定載入庫的目錄便可解決這個問題:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64
若是放在啓動的sh腳本中,該設置只在當前運行環境下有效,從而能夠避免其餘程序之間的相互干擾。