FrontPage > 製品 > ソフトウェア開発 > 開発ツール > GCC

GCC(GNU Compiler Collection)

GNU Compiler Collection(グニューコンパイラコレクション)は、GNUのコンパイラ群である。略称は「GCC」。

製品概要

GNU Compiler Collection(グニューコンパイラコレクション)は、GNUのコンパイラ群である。略称は「GCC」。

標準パッケージにはC、C++、Objective-C、Objective-C++、FORTRAN、Java及びAdaのコンパイラ並びにこれらのライブラリが含まれている。

当初はCコンパイラとして開発され、GCCは GNU C Compiler を意味していた。しかし、もともと多言語を想定して設計されており、 GNU C Compiler と呼ばれていたときでも多くの言語をサポートしていた。現在でも GNU C Compiler の意味で「GCC」と呼ぶことも多い(ちなみに GNU C Compiler の実行ファイルの名称もgccである)。なお、GNU C++コンパイラをG++、GNU JavaコンパイラをGCJ、GNU AdaコンパイラをGNATと呼ぶ。

CコンパイラとしてのGCCは、ANSI規格 (ANSI X3.159-1989) 準拠のC言語コンパイラ処理系であり、登場当初の時点では、OS標準に付属するCコンパイラがANSI規格に準拠していなかったことが多かったため、GCCはANSI規格を広める役割を果たした(GCC自身はK&Rの範囲内のC言語で記述されていたので、OS付属のコンパイラでコンパイルできた)。

複数プログラミング言語・複数アーキテクチャへの対応とクロス開発対応・移植性の高さ、また何よりGPLの下、ソースコードを誰でも参照でき変更できることが、GCCを他のコンパイラと異なるものにしている。

構成

GCCは通常のコンパイラと同様にフロントエンド部、最適化部、バックエンド部から構成される。

フロントエンド部は字句解析、構文解析などを行い、対応言語ごとに用意されている。たとえばC++フロントエンド、Javaフロントエンドなどがある。

バックエンド部のコード生成部(コードジェネレータ)、および最適化部(オプティマイザ)は全言語で共通である。したがってGCCの対応の言語同士の間では、生成コードの質や対応するCPUの種類は原理的に同じになる。なお、フロントエンドおよびバックエンドの間でやりとりされる中間形式としてRTL (Register Transfer Language) が使用される。

CコンパイラとしてのGCCの開発のために、構文解析部生成系bison、字句解析部生成系flexが開発された。これらを使用してGNU Cコンパイラその他の各種フロントエンドは構築されている。これらは単独のフリーソフトウェアとしても有用なものである。

GCCはバージョン4から中間形式が2つ追加された。まず、各言語は通常フロントエンド言語の木構造を保持した共通中間形式のGENERICに変換されその後GIMPLEという中間形式で木の最適化SSAをおこなってからRTLの最適化がおこなわれる。また、CやC++のコンパイル時にフロントエンドの構文解析、字句解析においてbisonやflexを使用しなくなった。

Wikipediaより転載)

製品カテゴリ ソフトウェア開発 > 開発ツール
対象ユーザー デベロッパー
ライセンス GPL
価格 無償
開発元 GCC team(GNUプロジェクト)
資料