編譯安裝GCC 7.1.0
阿新 • • 發佈:2019-02-08
簡介
主要原因: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。用於糾錯在定義範圍之外的地址上使用的變數。
編譯安裝
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
。