安裝 GCC 6.3.0

介紹

GCC 全稱是 GNU Compiler Collection。 GCC 原本是指 C 語言的編譯器,后來逐漸集成了許多其他語言的編譯,因次其含義就改成了 GNU Compiler Collection,它能支持編譯的語言有 C, C++, Fortran, Objective C, Objective C++, 以及 Go 語言。它甚至還能編譯 Ada 和 Java,但是有特殊的要求,這里暫不詳述。

本文介紹在 Ubuntu 系統(tǒng)中源碼安裝 GCC 最新的發(fā)布版 GCC 6.3.0,在其他 Linux 系統(tǒng)中的安裝方法類似。
如果當(dāng)前的機(jī)器是升級安裝,最好不要覆蓋原有的 GCC 版本,因為如果本地安裝了第三方的 Kernel 組件的話,一旦覆蓋安裝,有可能導(dǎo)致這些組件無法工作,除非我們把這些安裝的第三方庫及組件也使用最新安裝的 GCC 重新編譯。

下載

http://ftpmirror.gnu.org/gcc/gcc-6.3.0/gcc-6.3.0.tar.bz2
ftp://ftp.gnu.org/gnu/gcc/gcc-6.3.0/gcc-6.3.0.tar.bz2
MD5 sum: 677a7623c7ef6ab99881bc4e048debb6
size: 95 MB
Estimated disk space required: 7.7 GB (with tests)

依賴

  • GMP4.2+, MPFR 2.4.0+, and MPC 0.8.0+
  • flex
  • zlib

編譯

case $(uname -m) in
  x86_64)
    sed -e '/m64=/s/lib64/lib/' \
        -i.orig gcc/config/i386/t-linux64
  ;;
esac

mkdir build                                          &&
cd    build                                          &&

../configure                                         \
    --prefix=/usr                                    \
    --disable-multilib                               \
    --with-system-zlib                               \
    --enable-languages=c,c++,fortran,go,objc,obj-c++ &&
make

如果缺少依賴,那么可能會在執(zhí)行 ./configure 的過程中出現(xiàn)錯誤,也可能在執(zhí)行 make 進(jìn)行編譯的過程中出現(xiàn)錯誤。

(1) GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+

configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.
Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify their locations.

在 Ubuntu 中執(zhí)行這個命令可以安裝上述3個依賴包:

$ sudo apt-get install libgmp-dev libmpfr-dev libmpc-dev

如果想源碼安裝上述3個依賴包的最新版本,可以參考這篇文章

(2) flex
sudo apt-get install flex

如果需要源碼編譯安裝,那么 flex 有如下依賴:

  • compiler suite - flex is built with gcc
  • bash, or a good Bourne-style shell
  • m4 - m4 -p needs to work; GNU m4 and a few others are suitable
  • GNU bison; to generate parse.c from parse.y
  • autoconf; for handling the build system
  • automake; for Makefile generation
  • gettext; for i18n support
  • help2man; to generate the flex man page
  • tar, gzip, lzip, etc.; for packaging of the source distribution
  • GNU texinfo;
(3) zlib
sudo apt-get install zlib1g-dev

注意: 執(zhí)行 make 進(jìn)行編譯后,這個過程會非常漫長,如果機(jī)器性能一般,可能長達(dá)好幾個小時,請做好心理準(zhǔn)備。

安裝

一旦成功編譯,安裝過程就非常簡單,因為這個步驟只是把編譯好的文件(二進(jìn)制,庫,頭文件,文檔等)拷貝到系統(tǒng)目錄。 執(zhí)行下列命令進(jìn)行安裝(確保是 root 權(quán)限下操作)。

make install

編譯選項相關(guān)解釋

--disable-multilib: 這個選項只會生成當(dāng)前系統(tǒng)的庫,比如當(dāng)前系統(tǒng)是64位,那么只會生成 64 位的庫,而不會生成 32 位的庫。
--with-system-zlib: 使用系統(tǒng)的 zlib 庫,而不是源碼中附帶的 zlib。如果系統(tǒng)沒有安裝 zlib,那么可以執(zhí)行apt-get install zlib1g-dev 來安裝
--enable-languages=c,c++,fortran,go,objc,obj-c++: 指定生成哪些語言所需的編譯器,如果不指定,那么默認(rèn)會編譯所有語言所需的編譯器。
--with-default-libstdcxx-abi=gcc4-compatible: 如果是升級安裝 GCC 并且原 GCC 版本地獄 5.1.0 的話,這個選項可以讓你避免重編譯原有的C++語言所編寫的庫
make -k check: 在跑測試的時候即使遇到 error 也不停下來,而是跑完所有 test。
../contrib/test_summary: 這個命令可以生成總的測試結(jié)果概述。
mv -v /usr/lib/*gdb.py ...: 把一些 gdb 可能要用到的文件放到 /usr/lib 目錄中。

所有安裝的程序及庫

Installed Programs: gccgo, go, gofmt and gfortran, hard-linked to architecture specific names
Installed Libraries: libgfortran.{so,a}, libgo.{so,a}, libgobegin.a, libgolibbegin.a, libnetgo.a, libobjc.{so,a}, and numerous other run-time libraries and executables
Installed Directories: /usr/lib/go/6.3.0

二進(jìn)制程序介紹

gccgo 一個基于 GCC 的 Go 語言編譯器
go 用于管理 Go 源碼的工具
gofmt 用于格式化 Go 源碼
gfortran 一個基于 GCC 的 Fortran 語言編譯器

參考

http://www.linuxfromscratch.org/blfs/view/cvs/general/gcc.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容