【コンパイラ】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もあったが現在は開発が終了している
Author

Daiki Iijima

Posted on

2021-08-30

Updated on

2024-04-17

Licensed under