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トリプレットを表示することもできます。 p>

また、コンマで区切られたオプションや引数をアセンブラ、プリプロセッサ、リンカに渡したり、リンクせずにコンパイルしてアセンブルしたり、共有ライブラリなどを作成するためのさまざまなオプションがあります。


GNUオペレーティングシステム用に設計されています
GNUオペレーティングシステムのメインコンパイラとして書かれていたGCC(GNU Compiler Collection)は、100%フリーソフトウェアとして開発され、デフォルトではどのLinuxディストリビューションにもインストールされています。

このソフトウェアは、オープンソース開発者がプロ​​グラムをコンパイルするためにも使用されます。コマンドラインにはいくつかのオプションがあります。その中で、コンパイラのターゲットプロセッサと、OSライブラリへの相対パスを表示する機能についても言及しています。


結論

まったく、GCCは、GNU / Linuxオペレーティングシステムの最も重要なコンポーネントの1つです。

このリリースの新機能:

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 ++フロントエンドは現在、-std = c ++ 1zと-std = gnu ++ 1zオプションを持つ現在のC ++ 17ドラフトのすべてを実験的にサポートしています。また、libstdc ++ライブラリにはC ++ 17のドラフトのほとんどがありますライブラリ機能も実装されています。このリリースでは、改善されたロケーション、ロケーションの範囲、スペルの間違った識別子の提案、オプション名、修正のヒント、および様々な新しい警告が追加されたなど、発行された診断のさまざまな改善が行われています。オプティマイザが改善され、ストア内マージン・パス、コード・ホイスト最適化、ループ・スプリッティング、シュリンクなどのプロシージャ間の最適化、リンク時間の最適化、およびさまざまなターゲット・バックエンドに改良が加えられましたラッピングの改善。アドレスサニタイザは、スコープから離れると変数の使用を報告できるようになりました。 GCCはOpenMP 4.5のNVidia PTX GPGPUへのオフロード用に設定できるようになりました。

バージョン6.3.0の新機能:


GCC 6.3は、GCC 6ブランチからのバグ修正リリースであり、GCC 6.2の重大なバグ修正と重大なバグ修正を含み、以前のリリースから79以上のバグが修正されています。

バージョン6.2.0の新機能:



このリリースは、GCCの以前のリリースと比較して、GCC 5.2における回帰の修正を含むバグ修正リリースです。

バージョン6.1.0の新機能:



このリリースは、GCCの以前のリリースと比較して、GCC 5.2における回帰の修正を含むバグ修正リリースです。

バージョン5.3.0の新機能:



このリリースは、GCCの以前のリリースと比較して、GCC 5.2における回帰の修正を含むバグ修正リリースです。

バージョン5.2.0の新機能:



このリリースは、GCCの以前のリリースと比較して、GCC 5.1における回帰の修正を含むバグ修正リリースです。

バージョン5.1.0の新機能:

C ++フロントエンドは完全なC ++ 14言語サポートを、標準C ++ライブラリは完全なC ++ 11サポートと実験的な完全C ++ 14サポートを備えています。デュアルABIを採用することにより、C ++ 11の完全なサポートが可能になりました。詳細はhttps://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.htmlを参照してください。
CフロントエンドはデフォルトでC11モードにデフォルト設定され、GNU拡張機能を備えており、インラインキーワードのセマンティクスに影響を及ぼし、他にもいくつかのユーザーに視認可能な変更をもたらします。詳細はhttps://gcc.gnu.org/gcc-5/porting_to.htmlを参照してください。 。
GCC 5.1には、さまざまな手続き間最適化の改善が含まれています。新たなIPA同一コード折りたたみパス及び様々なLTO改善(例えば、 C ++のODRベースのマージについては、http://hubicka.blogspot.cz/2015/04/GCC5-IPA-LTO-news.htmlを参照してください。
GCC 5.1ローカルレジスタアロケータは、位置独立コードの性能を向上させるためにPICハードレジスタを再利用することができる再マテリアライゼーションサブパスを含むようになりました。単純な手続間RAパスがありました。追加されました。

GCC 5.1では、OpenACC標準に対する部分的なサポート、Intelの次世代Xeon PhiアクセラレータへのOpenMP 4.0オフロードのサポート、PTXへのOpenACCオフロードのサポートが追加されています。 GCCの未定義動作サニタイザは、さまざまな新しいランタイムチェックを追加することで拡張されました。実験的なGCC JITライブラリがGCC 5.1に追加されました。

バージョン4.8.4の新機能:

一般的なオプティマイザの改善点:
高速メモリエラー検出器である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の最終的なキーワードが考慮されています。
新しい投機的な非仮想化パス(-fdevirtualize-speculativelyによって制御される)。
投機的にダイレクトに行われたコールは、直接コールが安くない間接に戻されます。
共有ライブラリ全体で意味的に同等であることが知られているシンボルには、動的リンク時間を改善するローカルエイリアスが導入されています。
フィードバック指向最適化の改善:C ++インライン関数を使用したプログラムのプロファイリングがより信頼できるようになりました。
新しい時間プロファイリングは、関数の実行順序を決定します。
新しい関数並べ替えパス(-freorder-functionsによって制御される)は、大きなアプリケーションの起動時間を大幅に短縮します。 binutilsのサポートが完了するまでは、リンク時の最適化でのみ有効です。
フィードバック駆動型の間接呼び出しの削除と非同期化では、リンク時の最適化が有効な場合にモジュール間の呼び出しが処理されるようになりました。
新しい言語と言語固有の改善点:
OpenMP仕様のバージョン4.0は、CおよびC ++コンパイラでサポートされ、Fortranコンパイラでも4.9.1リリースから開始されています。新しい-fopenmp-simdオプションを使用すると、OpenMPのSIMDディレクティブを有効にし、他のOpenMPディレクティブは無視できます。新しい-fsimd-cost-model =オプションを使用すると、OpenMPおよびCilk Plusのsimdディレクティブで注釈を付けたループのベクトル化コストモデルを調整できます。 -Wopenmp-simdは、現在のコストモデルがユーザーによって設定されたsimdディレクティブを上書きすると警告します。-Wdate-timeオプションは、__DATE__、__TIME__、または__TIMESTAMP__マクロが使用されたときに警告するC、C ++、Fortranのコンパイラに追加されています。これらのマクロは、ビット単位で同一の再現可能なコンパイルを妨げる可能性があります。
アダ:
GNATは、デフォルトでAda 2005ではなくAda 2012に切り替えました。
Cファミリー:
GCCの発色診断のサポートが追加されました。 -fdiagnostics-color = autoを指定すると、端末に出力するときに-fdiagnostics-color =常に無条件に有効になります。 GCC_COLORS環境変数を使用して、色をカスタマイズしたり、色付けを無効にすることができます。 GCC_COLORS変数が環境に存在する場合、デフォルトは-fdiagnostics-color = auto、それ以外の場合は-fdiagnostics-color = neverです。
サンプル診断出力:
$ g ++ -fdiagnostics-color =常に-S - 壁テスト.C
test.C:関数で‘ int foo() ':
test.C:1:14:警告:戻り値が返されていない関数を返します。[-Wreturn-type]
int foo(){}
test.C:2:46:エラー:テンプレートのインスタンス化の深さが最大900を超えています(最大を増やすには-ftemplate-depth =を使用してください)。インスタンス化‘ struct X '
テンプレート構造体X {static const int value = X :: value; };テンプレート構造体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が使用されているコーナーケースを除いてサポートされています)、浮動小数点問題(主に、 Annexes FおよびGのC99フィーチャとオプションのAnnexes K(境界チェックインターフェイス)およびL(分析可能性)
新しいC拡張__auto_typeは、GNU CのC ++ 11 autoの機能のサブセットを提供します。
C ++:
通常の関数のC ++ 1y戻り型の控除のG ++実装は、N3638に準拠するように更新されました。この提案は作業用紙に受け入れられました。最も顕著なのは、プレーンオートのテンプレート引数の控除セマンティクスではなく、decltypeセマンティクスを得るためにdecltype(auto)を追加したことです。
int& amp; amp; f();
自動i1 = f(); // int
宣言型(自動)i2 = f(); // int& amp;
G ++はC ++ 1yラムダキャプチャイニシャライザをサポートしています:
[x = 42] {...};
実際には、GCC 4.5から受け入れられましたが、コンパイラは-std = c ++ 1yで警告しませんし、カッコで囲んだ初期化子もブレースで囲んだイニシャライザもサポートしています。

G ++はC ++ 1yの可変長配列をサポートしています。 G ++は長い間GNU / C99スタイルのVLAをサポートしていましたが、現在ではイニシャライザとラムダの参照を追加でサポートしています。 C ++ 1yモードでは、G ++は、VLA型へのポインタの作成やVLA変数へのsizeofの適用など、ドラフト標準では許可されていないVLAの使用について不平を言います。 VLAはC ++ 14の一部ではなく、別個の文書の一部であり、おそらくC ++ 17の一部となるように見えることに注意してください。
void f(int n){
int a [n] = {1,2,3}; // n< 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リリースは、CやC ++だけでなく、FortranでもOpenMP 4.0をサポートしています。

バージョン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の最終的なキーワードが考慮されています。
新しい投機的な非仮想化パス(-fdevirtualize-speculativelyによって制御される)。
投機的にダイレクトに行われたコールは、直接コールが安くない間接に戻されます。
共有ライブラリ全体で意味的に同等であることが知られているシンボルには、動的リンク時間を改善するローカルエイリアスが導入されています。
フィードバック指向最適化の改善:C ++インライン関数を使用したプログラムのプロファイリングがより信頼できるようになりました。
新しい時間プロファイリングは、関数の実行順序を決定します。
新しい関数並べ替えパス(-freorder-functionsによって制御される)は、大きなアプリケーションの起動時間を大幅に短縮します。 binutilsのサポートが完了するまでは、リンク時の最適化でのみ有効です。
フィードバック駆動型の間接呼び出しの削除と非同期化では、リンク時の最適化が有効な場合にモジュール間の呼び出しが処理されるようになりました。
新しい言語と言語固有の改善点:
OpenMP仕様のバージョン4.0は、CおよびC ++コンパイラでサポートされるようになりました。新しい-fopenmp-simdオプションを使用すると、OpenMPのSIMDディレクティブを有効にし、他のOpenMPディレクティブは無視できます。新しい-fsimd-cost-model =オプションを使用すると、OpenMPおよびCilk Plusのsimdディレクティブで注釈を付けたループのベクトル化コストモデルを調整できます。 -Wopenmp-simdは、現在のコストモデルがユーザーによって設定されたsimdディレクティブをオーバーライドすると警告します。
-Wdate-timeオプションは、__DATE__、__TIME__、または__TIMESTAMP__マクロが使用されたときに警告するC、C ++、Fortranのコンパイラに追加されています。これらのマクロは、ビット単位で同一の再現可能なコンパイルを妨げる可能性があります。アダ:
GNATは、デフォルトでAda 2005ではなくAda 2012に切り替えました。
Cファミリー:
GCCの発色診断のサポートが追加されました。 -fdiagnostics-color = autoを指定すると、端末に出力するときに-fdiagnostics-color =常に無条件に有効になります。 GCC_COLORS環境変数を使用して、色をカスタマイズしたり、色付けを無効にすることができます。 GCC_COLORS変数が環境に存在する場合、デフォルトは-fdiagnostics-color = auto、それ以外の場合は-fdiagnostics-color = neverです。
サンプル診断出力:
$ g ++ -fdiagnostics-color =常に-S - 壁テスト.C
test.C:関数で‘ int foo() ':
test.C:1:14:警告:戻り値が返されていない関数を返します。[-Wreturn-type]
int foo(){}
test.C:2:46:エラー:テンプレートのインスタンス化の深さが最大900を超えています(最大を増やすには-ftemplate-depth =を使用してください)。インスタンス化‘ struct X '
テンプレート構造体X {static const int value = X :: value; };テンプレート構造体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が使用されているコーナーケースを除いてサポートされています)、浮動小数点問題(主に、 Annexes FおよびGのC99フィーチャとオプションのAnnexes K(境界チェックインターフェイス)およびL(分析可能性)
新しいC拡張__auto_typeは、GNU CのC ++ 11 autoの機能のサブセットを提供します。
C ++:
通常の関数のC ++ 1y戻り型の控除のG ++実装は、N3638に準拠するように更新されました。この提案は作業用紙に受け入れられました。最も顕著なのは、プレーンオートのテンプレート引数の控除セマンティクスではなく、decltypeセマンティクスを得るためにdecltype(auto)を追加したことです。
int& amp; amp; f();
自動i1 = f(); // int
宣言型(自動)i2 = f(); // int& amp;
G ++はC ++ 1yラムダキャプチャイニシャライザをサポートしています:
[x = 42] {...};
実際には、GCC 4.5から受け入れられましたが、コンパイラは-std = c ++ 1yで警告しませんし、カッコで囲んだ初期化子もブレースで囲んだイニシャライザもサポートしています。G ++はC ++ 1yの可変長配列をサポートしています。 G ++は長い間GNU / C99スタイルのVLAをサポートしていましたが、現在ではイニシャライザとラムダの参照を追加でサポートしています。 C ++ 1yモードでは、G ++は、VLA型へのポインタの作成やVLA変数へのsizeofの適用など、ドラフト標準では許可されていないVLAの使用について不平を言います。 VLAはC ++ 14の一部ではなく、別個の文書の一部であり、おそらくC ++ 17の一部となるように見えることに注意してください。
void f(int n){
int a [n] = {1,2,3}; // n< nならばstd :: bad_array_lengthをスローする。 3
[& a] {for(int i:a){cout

同じようなソフトウェア

へのコメント 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
コメントを追加
画像をオンにする!