web-dev-qa-db-ja.com

clang -cc1オプションは何をしますか?

私はclangの初心者です。 cudaコンパイラフロントエンドを使用したopenclからclangへのソースからソースへの変換に関する論文を読みました。

オプション-cc1が時々使用される理由を誰かに教えてもらえますか?

38
sp497

Clangコンパイラのフロントエンドには、GCC互換性ドライバインターフェイスでは公開されない、Clang固有の追加機能がいくつかあります。 -cc1引数は、ドライバーではなく、コンパイラーのフロントエンドが使用されることを示します。 clang -cc1機能は、コアコンパイラ機能を実装します。

だから、簡単に言えば。 -cc1を指定しない場合は、標準のGCCの「ルックアンドフィール」を期待できます。つまり、コンパイラフラグの大部分は、GCCで機能すると予想されるのと同じように機能します。オプション「-cc1」を渡すと、Clangコンパイラフラグが設定されます。したがって、GCCとは異なる場合があります。

それがもう少し明確になることを願っています。

35
ritter

通常のコンパイラは、コンパイラ自体、アセンブラ、リンカなどの実行方法を知っている、いわゆるコンパイラドライバと、ソースコード(場合によっては前処理済み)を取得してアセンブラ/オブジェクトコードを出力するコンパイラ自体で構成されます。

Clangはこれらすべてのコンポーネントを単一のバイナリで実装します。違いはコマンドラインだけです。ここに clang -cc1は、内部/文書化されていないオプションのセットなどを使用してコンパイラ自体を呼び出します。

10