コンテンツにスキップ

LLVM/clang

出典: フリー教科書『ウィキブックス(Wikibooks)』

はじめに

[編集]

ClangはLLVMプロジェクトの一部として開発されているC/C++/Objective-Cコンパイラフロントエンドです。本ハンドブックでは、コマンドとしてのclang(1)に焦点を当て、その基本的な使い方から高度なオプションまでを解説します。

Clangの概要

[編集]

Clangとは

[編集]
  • ClangはLLVMバックエンドを利用するコンパイラフロントエンド。
  • GCCと互換性がありながらも、高速なコンパイルと優れたエラーメッセージを提供。
  • cc1cc1asがインプロセスで実行されるため、プロセス生成のオーバーヘッドが少なく、高速なコンパイルを実現。
  • モジュラー設計により、解析ツールや静的解析にも活用される。

Clangのインストール

[編集]

FreeBSDでのインストール

[編集]

ベースシステムに含まれているので、インストールは不要です。

macOSでのインストール

[編集]
$ brew install llvm

Linuxでのインストール (例: Debian系)

[編集]
$ sudo apt install clang

基本的な使い方

[編集]

コンパイルと実行

[編集]

Cソースコードをコンパイルし、実行可能ファイルを生成する基本コマンド:

$ clang hello.c -o hello
$ ./hello

コンパイルのみ (オブジェクトファイル生成)

[編集]
$ clang -c hello.c -o hello.o

最適化レベルの指定

[編集]
$ clang -O2 hello.c -o hello

デバッグ情報を含めたコンパイル

[編集]
$ clang -g hello.c -o hello

よく使うオプション

[編集]
よく使うオプション
オプション 説明
-Wall 一般的な警告を有効化
-Wextra 追加の警告を有効化
-Werror 警告をエラーとして扱う
-std=c11 C言語の標準を指定
-march=native ネイティブアーキテクチャに最適化

ClangとGCCの違い

[編集]
ClangとGCCの違い
項目 Clang GCC
エラーメッセージ 分かりやすい 分かりにくい
コンパイル速度 高速 低速
消費メモリ 少ない 非常に多い
モジュール性 高い 低い

まとめ

[編集]

本ハンドブックでは、Clangの基本的な使い方とオプションを紹介しました。より高度な機能については、公式ドキュメントやclang --helpの出力を参照してください。

参考資料

[編集]