2021-05-12 14:32:11
Linux下編譯GCC 6.2.0
在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
相關文章