首頁 > 軟體

Linux下編譯GCC 6.2.0

2020-06-16 16:57:25

在Arch Linx的下gcc已經更新到6.2.1了,Win10的WSL下還是gcc4.8。官方源沒有比較新的版本,於是自己編譯使用。

GCC6的幾個新特性
GCC 6 現在的預設值是 C++ 14. GCC 6 現在包括 C++ Concepts.
C++執行時庫現在支援特殊的數學函數 (ISO/IEC 29124:2010)
支援 C++17 的實驗功能

準備

可以去gnu官網下載gcc6.2.0的原始碼,但國內存取速度比較慢。可以進中科大的映象站去下載。

下載並解壓

wget http://mirrors.ustc.edu.cn/gnu/gcc/gcc-6.2.0/gcc-6.2.0.tar.bz2
tar -xjvf gcc-6.2.0.tar.bz2

解壓之後進入原始碼目錄,執行下面命令下載依賴包

./contrib/download_prerequisites    #必須在原始碼根目錄下執行此命令

編譯gcc前需安裝build-essential,bison,flex,texinfo

生成Makefile

在原始碼目錄下建立一個build目錄(也可以在別的目錄下),然後進入build目錄執行configure指令碼生成Makefile檔案。

mkdir build && cd build
../configure --prefix=/usr/local/gcc6 --enable-checking=release --enable-languages=c,c++ --enable-threads=posix --disable-multilib
# --prefix=/usr/local/gcc6  指定安裝路徑
# --enable-languages=c,c++  支援的程式語言
# --enable-threads=posix    使用POSIX/Unix98作為執行緒支援庫
# --disable-multilib        取消多目標庫編譯(取消32位庫編譯)

下面是archlinux自帶gcc的編譯設定命令(gcc -v檢視)。

--prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared --enable-threads=posix --enable-libmpx --with-system-zlib --with-isl --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-plugin --enable-install-libiberty --with-linker-hash-style=gnu --enable-gnu-indirect-function --disable-multilib --disable-werror --enable-checking=release

如果設定的時候出現cannot find crt1.o cannot find crti.o cannot find crtn.o的錯誤,那麼需要指定--build的引數,比如x86_64

編譯安裝

上一步生成Makefile沒有問題後,就可以直接編譯安裝了。

make -j8    #使用8個執行緒並行編譯
make install    #安裝(可能需要root許可權)

錯誤與解決辦法

makeinfo沒有安裝

/mnt/d/gcc/gcc-6.2.0/missing: 81: /mnt/d/gcc/gcc-6.2.0/missing: makeinfo: not found
WARNING: 'makeinfo' is missing on your system.
         You should only need it if you modified a '.texi' file, or
         any other file indirectly affecting the aspect of the manual.
         You might want to install the Texinfo package:
         <http://www.gnu.org/software/texinfo/>
         The spurious makeinfo call might also be the consequence of
         using a buggy 'make' (AIX, DU, IRIX), in which case you might
         want to install GNU make:
         <http://www.gnu.org/software/make/>

解決辦法

sudo apt-get install texinfo

Linux升級GCC 4.8.1清晰簡明教學(Ubuntu 12.04 64位元版為例)  http://www.linuxidc.com/Linux/2014-04/99583.htm 

Ubuntu 14.04 LST安裝GCC 4.1.2  http://www.linuxidc.com/Linux/2016-06/132040.htm

Ubuntu 16.04 下將GCC-5.4降級到 4.8  http://www.linuxidc.com/Linux/2017-07/145502.htm

CentOS6.5升級手動安裝GCC4.8.2  http://www.linuxidc.com/Linux/2015-01/112595.htm 

CentOS 6.9升級GCC至6.4.0版本  http://www.linuxidc.com/Linux/2017-10/147256.htm

Ubuntu升級GCC版本 http://www.linuxidc.com/Linux/2016-11/136840.htm

CentOS7環境下在/離線安裝GCC與GCC-C++  http://www.linuxidc.com/Linux/2017-03/142319.htm

Ubuntu 16.04 LTS 降級安裝GCC 4.8  http://www.linuxidc.com/Linux/2017-03/142299.htm

CentOS 編譯 GCC 7.2  http://www.linuxidc.com/Linux/2017-12/149506.htm

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-12/149969.htm


IT145.com E-mail:sddin#qq.com