LLVM/clang
表示
< LLVM
はじめに
[編集]ClangはLLVMプロジェクトの一部として開発されているC/C++/Objective-Cコンパイラフロントエンドです。本ハンドブックでは、コマンドとしてのclang(1)に焦点を当て、その基本的な使い方から高度なオプションまでを解説します。
Clangの概要
[編集]Clangとは
[編集]- ClangはLLVMバックエンドを利用するコンパイラフロントエンド。
- GCCと互換性がありながらも、高速なコンパイルと優れたエラーメッセージを提供。
cc1やcc1asがインプロセスで実行されるため、プロセス生成のオーバーヘッドが少なく、高速なコンパイルを実現。- モジュラー設計により、解析ツールや静的解析にも活用される。
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=c11C言語の標準を指定 -march=nativeネイティブアーキテクチャに最適化
ClangとGCCの違い
[編集]ClangとGCCの違い 項目 Clang GCC エラーメッセージ 分かりやすい 分かりにくい コンパイル速度 高速 低速 消費メモリ 少ない 非常に多い モジュール性 高い 低い
まとめ
[編集]本ハンドブックでは、Clangの基本的な使い方とオプションを紹介しました。より高度な機能については、公式ドキュメントやclang --helpの出力を参照してください。