【コンパイラ】GCCとClangの違い
目次
GCCとClangとはなにか
どちらも、プログラム言語のコンパイラです。
GCCとはなにか
- 読み方:ジーシーシー
- GNU Compiler Collectionの略称
歴史
- 1987年 : GNUプロジェクトの1つとして公開
- 開発自体は1985年から
概要
- C言語,C++言語がメインだが、他の言語もGCCのコンパイル時にコンパイルできる言語を指定してコンパイラをコンパイルすればコンパイルできるコンパイラを作成できる。
- C
- C++
- Objective-C
- Objective-C++
- Fortran
- Ada
- Go
- D
- フロントエンド部、最適化部、バックエンド部から構成される
- フロントエンドは各言語の字句解析、構文解析などを行う
- 最適化の段階で、共通中間形式のGENERICに変換されその後GIMPLEという中間形式で木の最適化SSAをおこなってからRTLの最適化がおこなわれる。
- バックエンド部では、RTLという中間言語(Register Transfer Language)でやり取りされる
Clangとはなにか
- 読み方:クラン
- コンパイラのフロントエンドとして作成され、バックエンドは、LLVMを想定されている
歴史
- 2007年 : Appleがオープンソース化
- Object-cをGCCでコンパイルしようとしていたが、GCCの進歩があまりよろしくなかったので、2005年からAppleが1からコンパイラを作った
概要
- フロントエンドとして、バックエンドのLLVMへの橋渡しとして、C、C++言語としてのすべての処理を行う
- リンクや機械語への変換はLLVMが行っている
- llvm-gccもあったが現在は開発が終了している
【コンパイラ】GCCとClangの違い