日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
CLANG(1) Clang CLANG(1) 名称 clang - Clang C、C++ と Objective-C コンパイラ 書式 clang [options] filename ... 解説 clang は、前処理、構文解析、最適化、コード生成、アセンブリとリンクを含 む、C、C++ と Objective-C コンパイラです。どのハイレベルのモード設定が 渡されるかによって、Clang は、完全なリンクを行う前に、停止します。Clang は、高度に統合されていますが、それを呼び出す方法を理解するために、コン パイルのステージを理解することは重要です。これらのステージは、次の通り です: ドライバ clang 実行形式は、コンパイラ、アセンブラとリンカのような、他の ツールの総合的な実行を制御する実際に小さなドライバです。通常、利 用者は、ドライバと情報をやりとりする必要はありませんが、他のツー ルを実行するためにそれを透過的に使用します。 前処理 このステージは、入力ソースファイルのトークン化、マクロ展開、 #include 展開と他のプリプロセッサ指示の取り扱いを操作します。こ のステージの出力は、通常、(C のための) ".i"、(C++ のための) ".ii"、(Objective-C のための) ".mi" または (Objective-C++ のため の) ".mii" ファイルと呼ばれます。 構文解析とセマンティック解析 このステージは、プリプロセッサのトークンを解析ツリーに変換して、 入力ファイルを解析します。解析ツリーの形式で一度、同様に、式のた めのタイプを計算するために意味解析に適用し、コードがよく形成され るかどうかを決定します。このステージは、解析エラーと同様にコンパ イラの警告のほとんどを生成することに責任があります。このステージ の出力は、"抽象構文ツリー" (Abstract Syntax Tree; AST) です。 コード生成と最適化 このステージは、AST を ("LLVM IR" として知られている) 低レベルの 中間コードに変換し、最後にマシンコードに変換します。このフェーズ は、生成されたコードを最適化し、ターゲット特有のコード生成を操作 することに責任があります。このステージの出力は、通常 ".s" ファイ ル、または "アセンブリ" ファイルと呼ばれます。 また、Clang は、コード生成プログラムが直接オブジェクトファイルを 生成する、統合アセンブラの使用をサポートします。これは、".s" ファイルを生成して、ターゲットアセンブラを呼び出すオーバヘッドを 避けます。 アセンブラ このステージは、コンパイラの出力をターゲットのオブジェクトファイ ルに変換するためにターゲットアセンブラを実行します。このステージ の出力は、通常 ".o" ファイル、または "オブジェクト" ファイルと呼 ばれます。 リンカ このステージは、複数のオブジェクトファイルを実行形式またはダイナ ミックライブラリにマージするためにターゲットのリンカを実行しま す。このステージの出力は、通常 "a.out"、".dylib" または ".so" ファイルと呼ばれます。 Clang 静的解析 clang 静的解析 (Clang Static Analyzer) は、コード解析を通してバグを見つ けようと試みるためにソースコードをスキャンするツールです。このツール は、Clang の多くの部分を使用して、同じドライバに組み込まれます。静的な アナライザを使用する方法に関する詳細については、 <http://clang-analyzer.llvm.org> を参照してください。 オプション ステージ選択オプション -E プリプロセッサのステージを実行します。 -fsyntax-only プリプロセッサ、構文解析とタイプチェックのステージを実行します。 -S LLVM 生成と最適化のステージとターゲット特有のコード生成、アセン ブリファイルの生成と同様に前のステージを実行します。 -c 上記のすべてとターゲット ".o" オブジェクトファイルを生成するアセ ンブラを実行します。 ステージ選択オプションなし ステージ選択オプションが指定されないなら、上記のすべてのステージ が実行され、リンカは、結果を実行形式または共有ライブラリに結合す るために実行されます。 言語選択とモードオプション -x <language> タイプ language があるものとして、その後の入力ファイルを扱いま す。 -std=<standard> コンパイルする言語の標準を指定します。 C 言語のためにサポートされた値は、次の通りです: c89 c90 iso9899:1990 ISO C 1990 iso9899:199409 改訂 1 がある ISO C 1990 gnu89 gnu90 GNU 拡張がある ISO C 1990 c99 iso9899:1999 ISO C 1999 gnu99 GNU 拡張がある ISO C 1999 c11 iso9899:2011 ISO C 2011 gnu11 GNU 拡張がある ISO C 2011 c17 iso9899:2017 ISO C 2017 gnu17 GNU 拡張がある ISO C 2017 デフォルト C 言語標準は、PS4 を除いて、gnu11 です、ここで、それ は、gnu99 です。 C++ 言語のためにサポートされた値は、次の通りです: c++98 c++03 改訂がある ISO C++ 1998 gnu++98 gnu++03 改訂と GNU 拡張がある ISO C++ 1998 c++11 改訂がある ISO C++ 2011 gnu++11 改訂と GNU 拡張がある ISO C++ 2011 c++14 改訂がある ISO C++ 2014 gnu++14 改訂と GNU 拡張がある ISO C++ 2014 c++17 改訂がある ISO C++ 2017 gnu++17 改訂と GNU 拡張がある ISO C++ 2017 c++2a ISO C++ 2020 のための作業ドラフト gnu++2a GNU 拡張がある ISO C++ 2020 のための作業ドラフト デフォルトの C++ 言語標準は、gnu++14 です。 OpenCL 言語のためにサポートされた値は、次の通りです: cl1.0 OpenCL 1.0 cl1.1 OpenCL 1.1 cl1.2 OpenCL 1.2 cl2.0 OpenCL 2.0 デフォルトの OpenCL 言語標準は、cl1.0 です。 CUDA 言語のためにサポートされた値は、次の通りです: cuda NVIDIA CUDA(tm) -stdlib=<library> 使用する C++ の標準ライブラリを指定します。サポートされるオプ ションは、libstdc++ と libc++ です。指定されないなら、プラット フォームのデフォルトが、使用されます。 -rtlib=<library> 使用するコンパイラの実行時ライブラリを指定します。サポートされる オプションは、libgcc と compiler-rt です。指定されないなら、プ ラットフォームのデフォルトが、使用されます。 -ansi -std=c89 と同じです。 -ObjC, -ObjC++ それぞれ Objective-C と Object-C++ の入力としてソース入力ファイ ルを扱います。 -trigraphs 3 つ組表記 (trigraph) を有効にします。 -ffreestanding ホスト環境ではなく、ファイルは、freestanding (独立) のためにコン パイルされるべきであることを示します。 -fno-builtin strlen() と malloc() のような組み込み関数の特別な取り扱いと最適 化を無効にします。 -fmath-errno 数学関数は、errno を更新するものとして扱われるべきであることを示 します。 -fpascal-strings "\pfoo" で Pascal スタイルの文字列のサポートを有効にします。 -fms-extensions Microsoft 拡張のサポートを有効にします。 -fmsc-version= _MSC_VER を設定します。Windows で 1300 をデフォルトとします。そ うでなければ設定しません。 -fborland-extensions Borland 拡張のサポートを有効にします。 -fwritable-strings すべての文字列のリテラルをデフォルトで書き込み可能にします。これ は、文字列と他の最適化の独自化 (uniquing) を無効にします。 -flax-vector-conversions 暗黙のベクトルの変換のためのゆるいタイプチェック規則を許可しま す。 -fblocks "Blocks" 言語機能を有効にします。 -fobjc-abi-version=version 使用する Objective-C ABI バージョンを選択します。利用可能なバー ジョンは、1 (古い "fragile" ABI)、2 (non-fragile ABI 1) と 3 (non-fragile ABI 2) です。 -fobjc-nonfragile-abi-version=<version> デフォルトで使用する Objective-C non-fragile ABI バージョンを選 択します。これは、non-fragile ABI が有効にされるとき、 (-fobjc-nonfragile-abi を通して、またはそれがプラットフォームの デフォルトであるので)、Objective-C ABI としてのみ使用されます。 -fobjc-nonfragile-abi, -fno-objc-nonfragile-abi Objective-C non-fragile ABI の使用を有効にします。これがデフォル トの ABI であるプラットフォームで、-fno-objc-nonfragile-abi で、 それを、無効にすることができます。 ターゲット選択オプション Clang は、設計の固有の部分としてクロスコンパイルを完全にサポートしてい ます。Clang のバージョンがどのように設定されているかによって、多くのク ロスコンパイラのサポートがあるか、または固有のターゲットのみをサポート します。 -arch <architecture> 構築するアーキテクチャを指定します。 -mmacosx-version-min=<version> Mac OS X のための構築のとき、アプリケーションによってサポートさ れた最小のバージョンを指定します。 -miphoneos-version-min iPhone OS のための構築のとき、アプリケーションによってサポートさ れた最小のバージョンを指定します。 -march=<cpu> Clang が特定のプロセッサのファミリメンバ以降のためのコードを生成 すべきであることを指定します。例えば、-march=i486 を指定するな ら、コンパイラは、i486 以降のプロセッサで有効である命令を生成す ることができますが、以前のものに存在しないかもしれません。 コード生成オプション -O0, -O1, -O2, -O3, -Ofast, -Os, -Oz, -Og, -O, -O4 使用する最適化レベルを指定します: -O0 "最適化なし" を意味します: このレベルは、最も速くコンパイ ルして、最も多くのデバッグ可能なコードを生成します。 -O1 -O0 と -O2 の間のどこか。 -O2 ほとんどの最適化を有効にする最適化の適度なレベル。 -O3 実行するために時間がかかるか、または (プログラムをより速 く実行させる試みで) より大きなコードを生成する最適化を有効す ることを除いて、-O2 に似ています。 -Ofast 言語の標準で厳密な順守に違反する、他の積極的な最適化と ともに -O3 からのすべての最適化を有効にします。 -Os コードサイズを減少する特別の最適化で -O2 に似ています。 -Oz -Os (したがって、-O2) に似ていますが、コードサイズをさら に減少します。 -Og -O1 に似ています。将来のバージョンで、このオプションは、 デバッグ可能性を改善するために、異なった最適化を無効にするか もしれません。 -O -O2 と同等です -O4 とそれ以上 現在、-O3 と同等です。 -g, -gline-tables-only, -gmodules デバッグ情報出力を制御します。Clang デバッグ情報が -O0 で最もよ く動作することに注意してください。-g 始まる複数のオプションが指 定されるとき、最後のものが有効です: -g デバッグ情報を生成します。 -gline-tables-only 行テーブルデバッグ情報のみを生成します。こ れは、インライン情報で、シンボル化されたバックトレースに対し て許可されますが、変数、それらの位置、またはタイプに関するあ らゆる情報を含みません。 -gmodules Clang モジュールで定義されたタイプへの外部参照、ま たはすべてのオブジェクトファイルに冗長なデバッグタイプ情報を 出力する代わりにヘッダを事前コンパイルされることを含んでいる デバッグ情報を生成します。このオプションは、Clang モジュール 形式を、デバッグ情報とともに Clang モジュールを保持するオブ ジェクトファイルのコンテナに透過的に切り替えます。Clang モ ジュールまたは事前にコンパイルされたヘッダを使用するプログラ ムをコンパイルするとき、このオプションは、より速いコンパイル 時間とより小さなオブジェクトファイルで完全なデバッグ情報を生 成します。 このオプションは、デバッグ情報が、ライブラリのオブジェクト ファイルが構築されたマシンのモジュールキャッシュへの参照を含 むので、他のマシンへの配布のために静的なライブラリを構築する とき、使用されるべきではありません。 -fstandalone-debug -fno-standalone-debug Clang は、バイナリのデバッグ情報のサイズを減少するための最適化の 数をサポートしています。それらは、複数のコンパイル単位を越えてデ バッグタイプ情報を展開することができるという仮定に基づいて動作し ます。例えば、Clang は、モジュールによって必要ではなく、前の宣言 で置き換えれるタイプのためのタイプ定義を出力しません。さらに、 Clang は、クラスのための vtable を含んでいるモジュールの動的な C++ クラスのためのタイプ情報のみを出力します。 -fstandalone-debug オプションは、これらの最適化をオフにします。 これは、デバッグ情報とともにではなく、第 3 者のライブラリで動作 するとき、役に立ちます。これは、Darwin のデフォルトです。Clang は、プログラムによって全く参照されないタイプのためのタイプ情報を 決して出力しないことに注意してください。 -fexceptions unwind 情報の生成を有効にします。これによって、例外処理は、ス タックフレームをコンパイルした Clang を通して投入できます。これ は、デフォルトで x86-64 をオンにします。 -ftrapv 整数オーバフローのエラーを捕獲するコードを生成します。符号付き整 数のオーバフローは、C で未定義です。このフラグで、これを検出する 特別のコードを生成し、それが起こるとき、アボートします。 -fvisibility このフラグは、デフォルトの可視性 (visibility) のレベルを設定しま す。 -fcommon, -fno-common このフラグは、初期化子 (initializer) のない変数が共通のリンケー ジを取得することを指定します。-fno-common でそれを無効にすること ができます。 -ftls-model=<model> スレッドローカル (thread-local) 変数のために使用するデフォルトの スレッドローカル記憶域 (TLS) モデルを設定します。有効な値は、次 の通りです: "global-dynamic", "local-dynamic", "initial-exec" と "local-exec"。デフォルトは、"global-dynamic" です。tls_model 属 性でデフォルトのモデルを上書きすることができます。コンパイラは、 できるなら、より効率的なモデルを選択しようとします。 -flto, -flto=full, -flto=thin, -emit-llvm リンク時間の最適化に適した、LLVM 形式で出力ファイルを生成しま す。-S とともに使用されるとき、これは、LLVM 中間言語アセンブリ ファイルを生成し、そうでなければ、これは、(ステージ選択オプショ ンに依存するリンカに渡される) LLVM ビットコード形式のオブジェク トファイルを生成します。 -flto のためのデフォルトは、リンカが、最適化のための単一の組み合 わされたモジュールにそのようなすべてモジュールをマージするところ で、LLVM bitcode がモノリシックなリンク時間最適化 (Link Time Optimization; LTO) のために適切である、"full" です。"thin" で、 ThinLTO コンパイルは、代わりに呼び出されます。 トライバオプション -### このコンパイルのために実行するコマンドを印刷 (表示) します (が、 実行しません)。 --help 利用可能なオプションを表示します。 -Qunused-arguments 未使用のドライバの引数のためのあらゆる警告を発行しません。 -Wa,<args> args のコンマで区切られた引数をアセンブラに渡します。 -Wl,<args> args のコンマで区切られた引数をリンカに渡します。 -Wp,<args> args のコンマで区切られた引数をプリプロセッサに渡します。 -Xanalyzer <arg> 静的な解析プログラムに arg を渡します。 -Xassembler <arg> arg をアセンブラに渡します。 -Xlinker <arg> arg をリンカに渡します。 -Xpreprocessor <arg> arg をプリプロセッサに渡します。 -o <file> 出力を file に書き込みます。 -print-file-name=<file> file の完全なライブラリのパスを印刷 (表示) します。 -print-libgcc-file-name 現在、使用されるコンパイラ実行時ライブラリ ("libgcc.a" or "libclang_rt.builtins.*.a") のためのライブラリパスを印刷 (表示) します -print-prog-name=<name> name の完全なプログラムのパスを印刷 (表示) します。 -print-search-dirs ライブラリとプログラムを見つけるために使用されるパスを印刷 (表 示) します。 -save-temps 中間のコンパイル結果を保存します。 -save-stats, -save-stats=cwd, -save-stats=obj 内部のコード生成 (LLVM) 統計をカレントディレクトリ (-save-stats/"-save-stats=cwd") または出力ファイル ("-save-state=obj") のディレクトリに保存します。 -integrated-as, -no-integrated-as それぞれ、統合アセンブラの使用を、有効、無効にするために使用しま す。統合アセンブラがデフォルトでオンであるかどうかは、ターゲット に依存します。 -time 時間の個別コマンド。 -ftime-report コンパイルの各ステージのタイミングの概要を印刷します。 -v 冗長な出力を実行して、使用するコマンドを表示します。 診断オプション -fshow-column, -fshow-source-location, -fcaret-diagnostics, -fdiagnostics-fixit-info, -fdiagnostics-parseable-fixits, -fdiagnostics-print-source-range-info, -fprint-source-range-info, -fdiagnostics-show-option, -fmessage-length これらのオプションは、Clang が診断に関する情報 (エラーと警告) を どのように印刷するかを制御します。詳細については、Clang のユーザ のマニュアルを参照してください。 前処理オプション -D<macroname>=<value> 暗黙の #define をソースファイルが前処理される前に読み込まれる事 前定義 (predefine) バッファに追加します。 -U<macroname> 暗黙の #undef をソースファイルが前処理される前に読み込まれる事前 定義 (predefine) バッファに追加します。 -include <filename> 暗黙の #include をソースファイルが前処理される前に読み込まれる事 前定義 (predefine) バッファに追加します。 -I<directory> 指定されたディレクトリをインクルードファイルのための検索パスに追 加します。 -F<directory> 指定されたディレクトリをフレームワークのインクルードファイルのた めの検索パスに追加します。 -nostdinc インクルードファイルのための標準のシステムディレクトリ、またはコ ンパイラの組み込みディレクトリを検索しません。 -nostdlibinc インクルードファイルのための標準のシステムディレクトリを検索しま せんが、コンパイラの組み込みのインクルードディレクトリを検索しま す。 -nobuiltininc インクルードファイルのための clang の組み込みディレクトリを検索 しません。 環境変数 TMPDIR, TEMP, TMP これらの環境変数は、コンパイルプロセスの間に使用される一時ファイ ルを書き込むための位置に対して、順番にチェックされます。 CPATH この環境変数が存在しているなら、それは、デフォルトのシステムのイ ンクルードのパスのリストに追加されるパスの区切られたリストとして 扱われます。デリミタは、PATH 環境変数で使用されるような、プラッ トフォーム依存のデリミタです。 環境変数の空の構成要素は、無視されます。 C_INCLUDE_PATH, OBJC_INCLUDE_PATH, CPLUS_INCLUDE_PATH, OBJCPLUS_INCLUDE_PATH これらの環境変数は、適切な言語を処理するときだけ使用される、 CPATH のように追加パスを指定します。 MACOSX_DEPLOYMENT_TARGET -mmacosx-version-min が指定されないなら、デフォルトの配備ター ゲットは、この環境変数から読み込まれます。Darwin ターゲット。こ のオプションは、Darwin ターゲットのみ影響します。 バグ バグを報告するには、<http://llvm.org/bugs/> を訪問してください。ほとん どのバグ報告は、再生成する情報と共に、(-E オプションを使用する) 前処理 されたソースファイルとコンパイラの完全な出力を含むべきです。 関連項目 as(1), ld(1) 作者 Clang / LLVM Team (<http://clang.llvm.org>) によってメンテナンスされて います COPYRIGHT 2007-2018, The Clang Team 7 Aug 02, 2018 CLANG(1)