コンテンツにスキップ

LLVM/clang++

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

はじめに

[編集]

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

Clang++の概要

[編集]

Clang++とは

[編集]
  • Clang++はClangのC++コンパイラフロントエンド。
  • G++と互換性がありながらも、高速なコンパイルと優れたエラーメッセージを提供。
  • cc1pluscc1asがインプロセスで実行されるため、プロセス生成のオーバーヘッドが少なく、高速なコンパイルを実現。

Clang++のインストール

[編集]

FreeBSDでのインストール

[編集]

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

macOSでのインストール

[編集]
$ brew install llvm

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

[編集]
$ sudo apt install clang

基本的な使い方

[編集]

C++ソースコードのコンパイルと実行

[編集]
$ clang++ hello.cpp -o hello
$ ./hello

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

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

最適化レベルの指定

[編集]
$ clang++ -O2 hello.cpp -o hello

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

[編集]
$ clang++ -g hello.cpp -o hello

よく使うオプション

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

Clang++とG++の違い

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

まとめ

[編集]

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

参考資料

[編集]