GCC

軟件截圖:
GCC
軟件詳細信息:
版本: 8.2.0 更新
上傳日期: 16 Aug 18
開發: The GCC Team
許可: 免費
人氣: 182

Rating: 3.0/5 (Total Votes: 3)

GCC (GNU Compiler Collection)是一個開源命令行軟件,旨在充當GNU / Linux和基於BSD的操作系統的編譯器。它包括許多編程語言的前端,包括Objective-C,Go,C ++,Java,C,Ada和Fortran。


功能一目了然

使用GCC,您可以僅使用相應程序的源存檔在Linux或BSD操作系統中配置,編譯和安裝GNU / Linux應用程序。但是,用戶不需要與編譯器進行交互,因為這是由configure和make腳本自動完成的。

該項目還包括各種編程語言的庫,例如libstdc和libgcj,與大多數GNU軟件一樣,它必須先配置才能在您的計算機上構建和安裝。

它還可以顯示特定庫的完整路徑,編譯器搜索路徑中的文件夾,特定組件的完整路徑,目標庫目錄,用於查找標頭的sysroot後綴以及目標的規範化GNU三元組。

此外,還有各種其他選項可以將某些逗號分隔的選項和參數傳遞給彙編程序,預處理程序和鏈接程序,無需鏈接即可編譯和彙編,創建共享庫等等。


專為GNU操作系統而設計

GCC(GNU編譯器集合)最初是作為GNU操作系統的主編譯器編寫的,它是100%免費軟件,默認情況下安裝在任何Linux發行版上。

該軟件也被開源開發人員用於編譯他們的程序。命令行有幾個選項,其中我們可以提到顯示編譯器目標處理器的能力,以及OS庫的相對路徑。


底線

總而言之,GCC是任何GNU / Linux操作系統中最重要的組件之一。不僅如此,我們甚至可以想像一個沒有它的世界,但GCC是整個開源生態系統背後的主要原因。

這個版本中的新內容

  • GCC 7.3是GCC 7分支的錯誤修復版本,其中包含對GCC 7.2中的回歸和嚴重錯誤的重要修復,自上一版本以來修復了99多個錯誤。
  • 此版本包含代碼生成選項,用於緩解x86和powerpc目標的Spectre Variant 2(CVE 2017-5715)。

版本8.1.0中的新功能

  • GCC 7.3是一個錯誤修復版本GCC 7分支包含對GCC 7.2中的回歸和嚴重錯誤的重要修復,自上一版本以來修復了99多個錯誤。
  • 此版本包含代碼生成選項,用於緩解x86和powerpc目標的Spectre Variant 2(CVE 2017-5715)。

版本中的新功能

  • GCC 7.1是一個主要版本,包含GCC 6.x或之前GCC版本中未提供的實質性新功能。 C ++前端現在對所有當前的C ++ 17草案都有實驗支持,其中-std = c ++ 1z和-std = gnu ++ 1z選項,libstdc ++庫包含大部分C ++ 17草案庫功能也實現了。此版本在發出的診斷中具有各種改進,包括改進的位置,位置範圍,拼寫錯誤標識符的建議,選項名稱,修復提示和各種新警告。優化器得到了改進,所有的過程內和程序間優化,鏈接時間優化和各種目標後端都出現了改進,包括但不限於添加商店合併傳遞,代碼提升優化,循環拆分和收縮包裝改進。 Address Sanitizer現在可以在離開範圍後報告變量的使用情況。現在可以將GCC配置為將OpenMP 4.5卸載到NVidia PTX GPGPU。

版本6.3.0中的新功能

  • GCC 6.3是GCC 6分支的錯誤修復版本,其中包含對GCC 6.2中的回歸和嚴重錯誤的重要修復,自上一版本以來修復了超過79個錯誤。

版本6.2.0中的新功能

  • 此版本是一個錯誤修復版本,包含GCC 5.2中與以前版本的GCC相關的回歸修復。

版本6.1.0中的新功能

  • 此版本是一個錯誤修復版本,包含GCC 5.2中與以前版本的GCC相關的回歸修復。

版本5.3.0中的新功能

  • 此版本是一個錯誤修復版本,包含GCC 5.2中與以前版本的GCC相關的回歸修復。

5.2.0版中的新功能

  • 此版本是一個錯誤修復版本,包含GCC 5.1中與以前版本的GCC相關的回歸修復。

版本5.1.0中的新功能

  • C ++前端現在支持完整的C ++ 14語言,標準C ++庫具有完整的C ++ 11支持和實驗性完整的C ++ 14支持。採用Dual ABI可以提供完整的C ++ 11支持,詳見https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html。
  • C前端現在默認為帶有GNU擴展的C11模式,這會影響內聯關鍵字的語義並帶來其他幾個用戶可見的更改,請參閱https://gcc.gnu.org/gcc-5/porting_to.html了解更多詳情。
  • GCC 5.1包含各種過程間優化改進,例如:新的IPA相同代碼折疊通行證和各種LTO改進,例如:基於ODR的C ++類型合併,請參閱http://hubicka.blogspot.cz/2015/04/GCC5-IPA-LTO-news.html以獲取更多詳細信息。
  • GCC 5.1本地寄存器分配器現在包含一個重新實現子通道,在i?86 / x86-64上能夠重用PIC硬件寄存器來提高位置無關代碼的性能,有一個簡單的過程間RA通道和各種其他寄存器分配改進已添加。
  • GCC 5.1增加了對OpenACC標準的部分支持,支持OpenMP 4.0卸載到英特爾即將推出的Xeon Phi加速器,並支持OpenACC卸載到PTX。 GCC中的Undefined Behavior Sanitizer已通過添加各種新的運行時檢查進行了擴展。 GCC 5.1中增加了一個實驗性的GCC JIT庫。

版本4.8.4中的

新內容

  • 一般優化工具改進:
  • 快速內存錯誤檢測器AddressSanitizer現已在ARM上提供。
  • UndefinedBehaviorSanitizer(ubsan),一個快速未定義的行為檢測器,已添加,可以通過-fsanitize = undefined啟用。將檢測各種計算以在運行時檢測未定義的行為。 UndefinedBehaviorSanitizer目前可用於C和C ++語言。
  • 鏈接時優化(LTO)改進:
  • 重寫了類型合併。新的實現速度明顯更快,佔用的內存更少。
  • 更好的分區算法,可在鏈接時間內減少流式傳輸。
  • 儘早刪除虛擬方法可以減少目標文件的大小,並縮短鏈接時內存使用和編譯時間。
  • 現在按需加載函數體,並在鏈接時提前釋放,以提高整體內存使用量。
  • 現在可以優化C ++隱藏的鍵控方法。
  • 使用鏈接器插件時,使用-flto選項進行編譯現在會生成僅包含LTO的中間語言表示的slim對象文件(.o)。使用-ffat -lto-objects創建另外包含目標代碼的文件。要生成適合LTO處理的靜態庫,請使用gcc-ar和gcc-ranlib;使用gcc-nm列出來自細長對象文件的符號。 (這要求使用插件支持編譯ar,ranlib和nm。)
  • 內存使用情況構建啟用了調試的Firefox從15GB減少到3.5GB;鏈接時間從1700秒到350秒。
  • 程序間優化改進:
  • 改進虛擬化的新型繼承分析模塊。現在,虛擬化會考慮匿名名稱空間和C ++ 11 final關鍵字。
  • 新的推測性虛擬化傳遞(由-fdevirtualize-speculatively控制。
  • 推測性地直接撥打的電話會被轉回間接電話,而直接電話並不便宜。
  • 為已知在共享庫之間在語義上等效的符號引入了本地別名,從而改善了動態鏈接時間。
  • 反饋導向的優化改進:
  • 使用C ++內聯函數對程序進行概要分析現在更加可靠。
  • 新時間分析確定執行函數的典型順序。
  • 新功能重新排序傳遞(由-freorder-functions控制)可顯著減少大型應用程序的啟動時間。在binutils支持完成之前,它僅對鏈接時優化有效。
  • 反饋驅動的間接呼叫刪除和虛擬化現在可以在啟用鏈接時優化時處理跨模塊調用。
  • 新語言和語言的具體改進:
  • 現在,C和C ++編譯器支持OpenMP規範的4.0版本,並從Fortran編譯器中的4.9.1版本開始。新的-fopenmp-simd選項可用於啟用OpenMP的SIMD指令,而忽略其他OpenMP指令。新的-fsimd-cost-model =選項允許調整使用OpenMP和Cilk Plus simd指令註釋的循環的矢量化成本模型; -Wopenmp-simd在當前成本模型覆蓋用戶設置的simd指令時發出警告。
  • 為C,C ++和Fortran編譯器添加了-Wdate-time選項,該選項在使用__DATE __,__ TIMME__或__TIMESTAMP__宏時發出警告。這些宏可能會阻止按位完全相同的可重現編譯。
  • 阿達:
  • 默認情況下,GNAT切換到Ada 2012而不是Ada 2005.
  • C家族:
  • 增加了對GCC發出的著色診斷的支持。 -fdiagnostics-color = auto將在輸出到終端時啟用它,-fdiagnostics-color =始終無條件。 GCC_COLORS環境變量可用於自定義顏色或禁用著色。如果環境中存在GCC_COLORS變量,則默認為-fdiagnostics-color = auto,否則為-fdiagnostics-color = never。
  • 樣本診斷輸出:
  • $ g ++ -fdiagnostics-color = always -S -Wall test.C
  • test.C:在功能‘ int foo()':
  • test.C:1:14:警告:函數中沒有返回語句返回非void [-Wreturn-type]
  • int foo(){}
  • test.C:2:46:錯誤:模板實例化深度超過最大值900(使用-ftemplate-depth =增加最大值)實例化‘ struct X'
  • template struct X {static const int value = X :: value; }; template struct X;
  • test.C:2:46:從‘ const int X :: value'遞歸需要
  • test.C:2:46:需要來自‘ const int X :: value'
  • test.C:2:88:從這裡要求
  • test.C:2:46:錯誤:類型不完整‘ X'用於嵌套名稱說明符
  • 使用新的#pragma GCC ivdep,用戶可以斷言沒有循環攜帶的依賴關係會阻止使用SIMD(單指令多數據)指令並發執行連續迭代。
  • 已添加對Cilk Plus的支持,可以使用-fcilkplus選項啟用。 Cilk Plus是C和C ++語言的擴展,用於支持數據和任務並行。本實現遵循ABI版本1.2;所有功能,但_Cilk_for已經實現。
  • 現在支持ISO C11原子(_Atomic類型說明符和限定符以及標題)。
  • 現在支持ISO C11通用選擇(_Generic關鍵字)。
  • 現在支持ISO C11線程本地存儲(_Thread_local,類似於GNU C __thread)。
  • ISO C11支持現在與ISO C99支持完全相同:基本上完整的模數錯誤,擴展標識符(支持除了使用-fextended-identifiers時的極端情況),浮點問題(主要但不完全)與附件F和G)以及可選附件K(界限檢查界面)和L(可分析性)的可選C99特徵有關。
  • 新的C擴展__auto_type在GNU C中提供了C ++ 11 auto的一部分功能。
  • C ++:
  • C ++的G ++實現1y正常函數的返回類型推導已更新為符合N3638,該提案被接受到工作文件中。最值得注意的是,它添加了decltype(auto)來獲取decltype語義而不是普通auto的模板參數推理語義:
  • INT&安培; F();
  • auto i1 = f(); // int
  • decltype(auto)i2 = f(); // int&
  • G ++支持C ++ 1y lambda捕獲初始化器:
  • [x = 42] {...};
  • 實際上,自GCC 4.5以來它們已被接受,但現在編譯器並沒有用-std = c ++ 1y來警告它們,並且還支持帶括號和括號的初始化器。
  • G ++支持C ++ 1y可變長度數組。 G ++長期以來一直支持GNU / C99風格的VLA,但現在還通過引用支持初始化器和lambda捕獲。在C ++ 1y模式中,G ++會抱怨草案標準不允許的VLA使用,例如形成指向VLA類型的指針或將sizeof應用於VLA變量。請注意,現在看來,VLA不會成為C ++ 14的一部分,但它將成為單獨文檔的一部分,然後可能是C ++ 17。
  • void f(int n){
  • int a [n] = {1,2,3}; //如果n<拋出std :: bad_array_length 3
  • [& a] {for(int i:a){cout

版本4.9.1中

什麼是新

  • GCC 4.9.1是GCC 4.9分支的錯誤修復版本,其中包含對GCC 4.9.0中的回歸和嚴重錯誤的重要修復,自上一版本以來修復了超過88個錯誤。除此之外,GCC 4.9.1版本還在Fortran中支持OpenMP 4.0,而不僅僅支持C和C ++。

版本4.9.0中

什麼是新

  • 一般優化工具改進:
  • 快速內存錯誤檢測器AddressSanitizer現已在ARM上提供。
  • UndefinedBehaviorSanitizer(ubsan),一個快速未定義的行為檢測器,已添加,可以通過-fsanitize = undefined啟用。將檢測各種計算以在運行時檢測未定義的行為。 UndefinedBehaviorSanitizer目前可用於C和C ++語言。
  • 鏈接時優化(LTO)改進:
  • 重寫了類型合併。新的實現速度明顯更快,佔用的內存更少。
  • 更好的分區算法,可在鏈接時間內減少流式傳輸。
  • 儘早刪除虛擬方法可以減少目標文件的大小,並縮短鏈接時內存使用和編譯時間。
  • 現在按需加載函數體,並在鏈接時提前釋放,以提高整體內存使用量。
  • 現在可以優化C ++隱藏的鍵控方法。
  • 使用鏈接器插件時,使用-flto選項進行編譯現在會生成僅包含LTO中間語言表示的超薄對象文件(.o)。使用-ffat -lto-objects創建另外包含目標代碼的文件。要生成適合LTO處理的靜態庫,請使用gcc-ar和gcc-ranlib;使用gcc-nm列出來自細長對象文件的符號。 (需要使用插件支持編譯ar,ranlib和nm。)
  • 內存使用情況構建啟用了調試的Firefox從15GB減少到3.5GB;鏈接時間從1700秒到350秒。
  • 程序間優化改進:
  • 改進虛擬化的新型繼承分析模塊。現在,虛擬化會考慮匿名名稱空間和C ++ 11 final關鍵字。
  • 新的推測性虛擬化傳遞(由-fdevirtualize-speculatively控制。
  • 推測性地直接撥打的電話會被轉回間接電話,而直接電話並不便宜。
  • 為已知在共享庫之間在語義上等效的符號引入了本地別名,從而改善了動態鏈接時間。
  • 反饋導向的優化改進:
  • 使用C ++內聯函數對程序進行概要分析現在更加可靠。
  • 新時間分析確定執行函數的典型順序。
  • 新功能重新排序傳遞(由-freorder-functions控制)可顯著減少大型應用程序的啟動時間。在binutils支持完成之前,它僅對鏈接時優化有效。
  • 反饋驅動的間接呼叫刪除和虛擬化現在可以在啟用鏈接時優化時處理跨模塊調用。
  • 新語言和語言的具體改進:
  • 現在,C和C ++編譯器支持OpenMP規範的4.0版。新的-fopenmp-simd選項可用於啟用OpenMP的SIMD指令,而忽略其他OpenMP指令。新的-fsimd-cost-model =選項允許調整使用OpenMP和Cilk Plus simd指令註釋的循環的矢量化成本模型; -Wopenmp-simd在當前costmodel覆蓋用戶設置的simd指令時發出警告。
  • 為C,C ++和Fortran編譯器添加了-Wdate-time選項,該選項在使用__DATE __,__ TIMME__或__TIMESTAMP__宏時發出警告。這些宏可能會阻止按位完全相同的可重現編譯。
  • 阿達:
  • 默認情況下,GNAT切換到Ada 2012而不是Ada 2005.
  • C家族:
  • 增加了對GCC發出的著色診斷的支持。 -fdiagnostics-color = auto將在輸出到終端時啟用它,-fdiagnostics-color =始終無條件。 GCC_COLORS環境變量可用於自定義顏色或禁用著色。如果環境中存在GCC_COLORS變量,則默認為-fdiagnostics-color = auto,否則為-fdiagnostics-color = never。
  • 樣本診斷輸出:
  • $ g ++ -fdiagnostics-color = always -S -Wall test.C
  • test.C:在功能‘ int foo()':
  • test.C:1:14:警告:函數中沒有返回語句返回非void [-Wreturn-type]
  • int foo(){}
  • test.C:2:46:錯誤:模板實例化深度超過最大值900(使用-ftemplate-depth =增加最大值)實例化‘ struct X'
  • template struct X {static const int value = X :: value; }; template struct X;
  • test.C:2:46:從‘ const int X :: value'遞歸需要
  • test.C:2:46:需要來自‘ const int X :: value'
  • test.C:2:88:從這裡要求
  • test.C:2:46:錯誤:類型不完整‘ X'用於嵌套名稱說明符
  • 使用新的#pragma GCC ivdep,用戶可以斷言沒有循環攜帶的依賴關係會阻止使用SIMD(單指令多數據)指令並發執行連續迭代。
  • 已添加對Cilk Plus的支持,可以使用-fcilkplus選項啟用。 Cilk Plus是C和C ++語言的擴展,用於支持數據和任務並行。本實現遵循ABI版本1.2;所有功能,但_Cilk_for已經實現。
  • 現在支持ISO C11原子(_Atomic類型說明符和限定符以及標題)。
  • 現在支持ISO C11通用選擇(_Generic關鍵字)。
  • 現在支持ISO C11線程本地存儲(_Thread_local,類似於GNU C __thread)。
  • ISO C11支持現在與ISO C99支持完全相同:基本上完整的模數錯誤,擴展標識符(支持除了使用-fextended-identifiers時的極端情況),浮點問題(主要但不完全)與附件F和G)以及可選附件K(界限檢查界面)和L(可分析性)的可選C99特徵有關。
  • 新的C擴展__auto_type在GNU C中提供了C ++ 11 auto的一部分功能。
  • C ++:
  • C ++的G ++實現1y正常函數的返回類型推導已更新為符合N3638,該提案被接受到工作文件中。最值得注意的是,它添加了decltype(auto)來獲取decltype語義而不是普通auto的模板參數推理語義:
  • INT&安培; F();
  • auto i1 = f(); // int
  • decltype(auto)i2 = f(); // int&
  • G ++支持C ++ 1y lambda捕獲初始化器:
  • [x = 42] {...};
  • 實際上,自GCC 4.5以來它們已被接受,但現在編譯器並沒有用-std = c ++ 1y來警告它們,並且還支持帶括號和括號的初始化器。
  • G ++支持C ++ 1y可變長度數組。 G ++長期以來一直支持GNU / C99風格的VLA,但現在還通過引用支持初始化器和lambda捕獲。在C ++ 1y模式中,G ++會抱怨草案標準不允許的VLA使用,例如形成指向VLA類型的指針或將sizeof應用於VLA變量。請注意,現在看來,VLA不會成為C ++ 14的一部分,但它將成為單獨文檔的一部分,然後可能是C ++ 17。
  • void f(int n){
  • int a [n] = {1,2,3}; //如果n<拋出std :: bad_array_length 3
  • [& a] {for(int i:a){cout

類似的軟件

Gauche
Gauche

14 Apr 15

SlimIt
SlimIt

14 Apr 15

CMake
CMake

16 Aug 18

Yazoo
Yazoo

20 Feb 15

意見 GCC

1 註釋
  • http://www.eduwizzonlinetrainings.com 29 Dec 17
    EduwizzOnlineTraining is one of the Best Online Training Institute in Hyderabad, Bangalore. Eduwizz provide courses like Hybris Development, WebSphere Commerce Server,Blockchain Training,Hyperledger Fabric Development ,Ethereum Development ,Commvault Training, Devops , Netapps , Mulesoft ESB ,Machine Learning,Data Science , Internet of Things , Hybris ,Angular JS , Node JS , Express JS , Business Analyst, Selenium testing with webdriver, Guidewire ,Adobe, RPA ,TSM, EMC...etc
添加評論
打開圖片!