1.1 獲取安裝包並解壓linux
wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2ios
tar -jxvf gcc-4.8.2.tar.bz2c++
1.2 下載編譯GCC所依賴的源碼庫,使用到一個特殊的腳本app
cd gcc-4.8.2 ide
./contrib/download_prerequisites 測試
將在./contrib目錄下,下載三個源碼庫:ui
gmp-4.3.2 mpfr-2.4.2 mpc-0.8.1 線程
1.3 編譯安裝上述三個依賴庫c++11
注意:沒有安裝到/usr/lib默認的系統目錄,因此get
稍後編譯GCC的時候,須要指定LIB庫目錄,使用指令以下:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-0.8.1/lib:/usr/local/gmp-4.3.2/lib:/usr/local/mpfr-2.4.2/lib
./configure --prefix=/usr/local/gmp-4.3.2
make
make install
./configure --prefix=/usr/local/mpfr-2.4.2 --with-gmp=/usr/local/gmp-4.3.2/
make
make install
./configure --prefix=/usr/local/mpc-0.8.1 --with-gmp=/usr/local/gmp-4.3.2/ --with-
mpfr=/usr/local/mpfr-2.4.2/
make
make install
1.4 創建一個目錄供編譯出的文件存放
mkdir gcc-build-4.8.2
cd gcc-build-4.8.2
1.5開始編譯GCC
指定依賴庫的路徑
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-0.8.1/lib:/usr/local/gmp-
4.3.2/lib:/usr/local/mpfr-2.4.2/lib
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib --
with-gmp=/usr/local/gmp-4.3.2/ --with-mpfr=/usr/local/mpfr-2.4.2/ --with-
mpc=/usr/local/mpc-0.8.1/
make
make install
1.6 測試版本
gcc -v
使用內建 specs。
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/i686-pc-linux-gnu/4.8.2/lto-wrapper
目標:i686-pc-linux-gnu
配置爲:../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
--with-gmp=/usr/local/gmp-4.3.2/ --with-mpfr=/usr/local/mpfr-2.4.2/ --with-
mpc=/usr/local/mpc-0.8.1/
線程模型:posix
gcc 版本 4.8.2 (GCC)
1.7例子編譯
#include <iostream>
#include <memory>
int main()
{
std::shared_ptr<int> pInt(new int(5));
std::cout << *pInt << std::endl;
return 0;
}
g++ -std=c++11 test.cpp
/usr/local/libexec/gcc/i686-pc-linux-gnu/4.8.2/cc1plus: error while loading shared
libraries: libmpc.so.2: cannot open shared object file: No such file or directory
緣由libmpc.so.2並無安裝到/usr/lib系統庫目錄,而是安裝在/usr/local/mpc-0.8.1目錄下,
因此須要執行以下的命令:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-0.8.1/lib:/usr/local/gmp-
4.3.2/lib:/usr/local/mpfr-2.4.2/lib