這裡介紹在 CentOS Linux 7 之下自己載 gcc 6 編譯器原始碼、編譯與安裝的過程。
gcc 是 Linux 系統上最常被使用的編譯器,而 CentOS Linux 7.2 中的 gcc 版本比較舊:
gcc -v
Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper Target: x86_64-redhat-linux Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux Thread model: posix gcc version 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC)
如果想要使用比較新的功能,就會有問題。以下是自己下載 gcc 6.3.0 原始碼來編譯與安裝的過程。
安裝編譯 gcc 所需要的函式庫:
sudo yum install libmpc-devel mpfr-devel gmp-devel
gcc 的原始碼可以從 GCC 的官方網站下載,在官方網站上有列出全球各地的鏡像站,任選一個站來下載即可。
用 wget
下載目前最新的 gcc 6.3 版:
wget http://mirrors.concertpass.com/gcc/releases/gcc-6.3.0/gcc-6.3.0.tar.bz2
解壓縮 gcc 原始碼:
tar jxvf gcc-6.3.0.tar.bz2
進入 gcc 原始碼目錄:
cd gcc-6.3.0/
下載其他必要的原始碼:
contrib/download_prerequisites
建立編譯用的目錄:
mkdir ../gcc-build cd ../gcc-build
使用以下參數執行 configure
:
../gcc-6.3.0/configure -v \ --enable-languages=c,c++ \ --disable-multilib \ --prefix=/usr/local/gcc-6.3.0
這裡我打算將 gcc 6.3 安裝在 /usr/local/gcc-6.3.0
這個目錄中,如果想安裝在其他的地方,可以自己更改這個路徑。
執行 make
編譯 gcc 6,由於我是在 CPU 有 40 核心的伺服器上編譯,所以直接使用 40 個 jobs 下去平行編譯,這樣編譯速度可以快很多:
make -j40
我的機器大概等個一、二十分鐘就編完了。編譯完成後,進行安裝:
sudo mkdir /usr/local/gcc-6.3.0
sudo chown seal:seal /usr/local/gcc-6.3.0
make install
檢查一下新的 gcc 版本:
/usr/local/gcc-6.3.0/bin/gcc -v
Using built-in specs. COLLECT_GCC=/usr/local/gcc-6.3.0/bin/gcc COLLECT_LTO_WRAPPER=/usr/local/gcc-6.3.0/libexec/gcc/x86_64-pc-linux-gnu/6.3.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ../gcc-6.3.0/configure -v --enable-languages=c,c++ --disable-multilib --prefix=/usr/local/gcc-6.3.0 Thread model: posix gcc version 6.3.0 (GCC)
這樣就可以開始使用新的 gcc 6.3 編譯器了。
參考資料:StackOverflow