1. 程式人生 > >離線升級gcc至最新!目前是6.3

離線升級gcc至最新!目前是6.3

前言
由於一些工作需要最近需要移植程式到Linux下面,不得不說,這方面C++確實沒有Java這樣的語言爽,一次“編譯”跨平臺執行。
適用
並不適合所有的系統,目前已知。Windows下的ubuntu subSystem就不行。已經測試的是虛擬機器下SuSe11 sp3、Centos6.3。其他作業系統的使用者,可以嘗試,在該系統下測試。
準備:
為了防止官網一些東西過期,我準備了百度網盤。地址:
http://pan.baidu.com/s/1gfLxlw3
1.依賴環境:
gmp:ftp://ftp.gnu.org/gnu/gmp
mpfr:

http://ftp.gnu.org/gnu/mpfr/
mpc:http://www.cise.ufl.edu/mirrors/GNU/pub/gnu/mpc

把gmp、mpfr、mpc、gcc的包都解壓,然後按照以下步驟輸入:
安裝:
解壓GMP、mpfr、mp3解壓到單獨的資料夾中

A:
安裝gmp:
cd gmp-6.1.2
./configure
make
macke check //無error 成功

有必要說明程式的標頭檔案(.h)和庫檔案(lib*)的位置,本次安裝會安裝在 
/usr/local/include 和 /usr/local/lib . 這個對後面安裝mpfr很有作用.

B:
安裝mpfr
cd mpfr-3.1.5
./configure --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib
make
make check// 確認有無錯誤
make install

C:
安裝MPC
cd mpc-1.0.3
./configure
make
make check
make install

D:配置lib目錄
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

安裝gcc
解壓gcc 並進入目錄
./configure –prefix=/usr/gcc482 –enable-threads=posix –disable-checking –disable-multilib –enable-languages=c,c++
make
make install

// 設定環境變數,以啟動gcc
mkdir /usr/gcc447backup/ 
mv /usr/bin/{gcc,g++} /usr/gcc447backup
ln -s /usr/gcc482/bin/gcc  /usr/bin/gcc
ln -s /usr/gcc482/bin/g++ /usr/bin/g++

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/gcc482/lib:/usr/gcc482/lib64
export LD_LIBRARY_PATH

查詢:
find / -name "libstdc++.so*"
例項找到結果可能是如下,賦值到lib64下面
/home/gcc-5.2.0/gcc-temp/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21  //最新動態庫
複製
cp /home/gcc-5.2.0/gcc-temp/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21 /usr/lib64

mkdir /usr/gcc447backup/
mv /usr/bin/{gcc,g++} /usr/gcc447backup
ln -s /usr/gcc482/bin/gcc /usr/bin/gcc
ln -s /usr/gcc482/bin/g++ /usr/bin/g++
gcc -v

特別說明的是make過程十分長,我在虛擬機器跑了接近6個小時才安裝完成!

另外如果要使用Cmake的同學定義以下環境變數:
export CC=/usr/gcc482/bin/gcc
export CXX=/usr/gcc482/bin/g++

如果發現不能執行自己的當前目錄的so
新增:
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH