1. 程式人生 > >編譯安裝GCC 7.1.0

編譯安裝GCC 7.1.0

簡介

  主要原因:GCC 7.1釋出,完全支援C++17。

GCC 7.1 Released with Full C++17 Support
  GCC 7.1中的C++ Front End提供了對當前C++17草案的支援,所支援的特性包括constexpr類模板引數推導(template argument deduction)、自動模板引數和結構化繫結等。GCC 7.1同時支援-std=c++1z和-std=gnu++1z編譯器標識。在C++的狀態頁面中,列出了C++ Front End中的所有新特性。正如InfoQ在前期所報道的,ISO C++委員會已於近期完成了對C++17的定義工作,只待得到組織中各國家機構的批准。
  GCC 7還對優化器進行了改進,其中包括一些新的過程內和過程間優化,例如:
  迴圈切分

(Loop splitting),編譯器選項為-fsplit-loops。在一些迴圈中,包含對一部分程式碼永真而對其餘程式碼永假的條件,該優化選項適用於這樣的迴圈。
  值範圍(Value range)和按位常量傳播(Constant Propagation),編譯器選項分別為-fipa-vrp和-fipa-bit-cp。它們分別用於在呼叫關係圖中傳播變數所屬範圍的知識,以及變數中值為零的位元位的位置資訊。
  程式碼提升(Code hoisting),編譯器選項為-fcode-hoisting。一個函式可能存在多個儘早退出的執行路徑,該選項通過在所有這些路徑上對錶達式求值,改進了部分冗餘消除(partial redundancy elimination)過程。
  域外地址糾錯
(Out-of-scope address sanitization),編譯器選項為-fsanitize-address-use-after-scope。用於糾錯在定義範圍之外的地址上使用的變數。

編譯安裝

  首先,我們要去官網下載最新的GCC原始碼:點我下載
  

wget http://gcc.skazkaforyou.com/releases/gcc-7.1.0/gcc-7.1.0.tar.gz

  注意:不用刪除舊版本的GCC,(⊙o⊙)…,不然你怎麼編譯……
  下載好了就解壓吧~
  

tar -xf gcc-7.1.0.tar.gz

  解壓好了之後,就進入目錄咯~cd gcc-7.1.0


  之後,執行指令碼./contrib/download_prerequisites,這個指令碼會幫我們下載、配置、安裝需要的依賴庫。
  建立編譯輸出目錄mkdir gcc-build-7.1.0,進入目錄cd gcc-build-7.1.0
  ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib。其中,--enable-languages表示你要讓你的gcc支援那些語言,--disable-multilib不生成編譯為其他平臺可執行程式碼的交叉編譯器。–disable-checking生成的編譯器在編譯過程中不做額外檢查,也可以使用--enable-checking=xxx來增加一些檢查;
  編譯:make,這個編譯要好久,我編譯了兩個小時……
  編譯完成之後,我們需要把原來的GCC解除安裝,換成7.1.0版本的。
  

sudo apt-get remove gcc gcc-5 #gcc-*的都要解除安裝了
sudo apt-get remove g++ g++-5 #g++-*的都要解除安裝了

  解除安裝完成,就可以我們的安裝大計了。
  安裝:sudo make install
  這裡寫圖片描述
  

附錄