この章では、コマンド行 C++ コンパイラオプションの使用方法について説明してから、機能別にその使用方法を要約します。オプションの詳細は、「16.8 dlopen を使って C プログラムから C++ ライブラリにアクセスする」で説明します。
次の表は、一般的なオプション構文の形式の例です。
表 3–1 オプション構文形式の例| 構文形式 | 例 | 
|---|---|
| -option | -E | 
| -optionvalue | -Ipathname | 
| -option=value | -xunroll=4 | 
| -option value | -o filename | 
括弧、中括弧、角括弧、パイプ文字、および省略符号は、オプションの説明で使用されているメタキャラクタです。これらは、オプションの一部ではありません。構文の説明での表記規則は本書の最初の「はじめに」を参照してください。
C++ コンパイラのオプションを使用する際の一般的な注意事項は次のとおりです。
-llib オプションは、ライブラリ liblib.a (または liblib.so) とリンクするときに使用します。 ライブラリが正しい順序で検索されるように、-lib オプションは、ソースやオブジェクトのファイル名のあとに指定する方が安全です。
一般にコンパイラオプションは左から右に処理され、マクロオプション (ほかのオプションを含むオプション) は条件に応じて内容が変更されます (ただし -U オプションだけは、すべての -D オプション後に処理されます)。これはリンカーオプションには当てはまりません。
-features、-I-l、-L、-library、-pti、-R、-staticlib、-U、-verbose および -xprefetch オプションで指定した内容は蓄積され、上書きはされません。
-D オプションは累積されますが、同じ名前に複数の -D オプションがあるとお互いに上書きされます。
ソースファイル、オブジェクトファイル、ライブラリは、コマンド行に指定された順序でコンパイルおよびリンクされます。
この節には、参照しやすいように、コンパイラオプションが機能別に分類されています。各オプションの詳細は、「16.8 dlopen を使って C プログラムから C++ ライブラリにアクセスする」を参照してください。
これらのオプションは、特に記載がないかぎりすべてのプラットフォームに適用されます。Solaris SPARC システム版のオペレーティングシステムに特有の機能は SPARC として表記され、x86 システム版のオペレーティングシステムに特有の機能は x86 として表記されます。
| オプション | 処理 | 
|---|---|
| -compat | コンパイラの主要リリースとの互換モードを設定します。 | 
| +e{0|1} | 仮想テーブル生成を制御します。 | 
| -g | デバッグ用にコンパルします。 | 
| -KPIC | 位置に依存しないコードを生成します。 | 
| -Kpic | 位置に依存しないコードを生成します。 | 
| -mt | マルチスレッド化したコードのコンパイルとリンクを行います。 | 
| -xcode=a | (SPARC) コードのアドレス空間を指定します。 | 
| -Merge | (SPARC) データセグメントとテキストセグメントをマージします。 | 
| -xmodel | 64 ビットオブジェクトの形式を Solaris x86 プラットフォーム用に変更します。 | 
| +w | 意図しない結果が生じる可能性のあるコードを特定します。 | 
| +w2 | +w で生成される警告以外に、通常は問題がなくても、プログラムの移植性を低下させる可能性がある技術的な違反についての警告も生成します。 | 
| -xregs | コンパイラは、一時記憶領域として使用できるレジスタ (一時レジスタ) が多ければ、それだけ高速なコードを生成します。このオプションは、利用できる一時レジスタを増やしますが、必ずしもそれが適切であるとはかぎりません。 | 
| -z arg | リンカーオプション | 
| オプション | 処理 | 
|---|---|
| -instlib | 指定ライブラリにすでに存在しているテンプレートインスタンスの生成を禁止します。 | 
| -m32|-m64 | コンパイルされたバイナリオブジェクトのメモリーモデルを指定します。 | 
| -xinstrument | スレッドアナライザで分析するために、プログラムをコンパイルして計測します。 | 
| -xjobs | コンパイラが処理を行うために作成するプロセスの数を設定します。 | 
| -xpch | 共通の一連のインクルードファイル群を共有するソースファイルを持つアプリケーションのコンパイル時間を短縮できます。 | 
| -xpchstop | -xpch でプリコンパイル済みヘッダーファイルを作成する際に適用される、最後のインクルードファイルを指定します。 | 
| -xprofile_ircache | (SPARC) -xprofile=collect で保存されたコンパイルデータを再使用します。 | 
| -xprofile_pathmap | (SPARC) 1 つのプロファイルディレクトリに存在する複数のプログラムや共有ライブラリをサポートします。 | 
| オプション | 処理 | 
|---|---|
| +d | C++ インライン関数を展開しません。 | 
| -dryrun | ドライバがコンパイラに渡すオプションを表示しますが、コンパイルはしません。 | 
| -E | C++ ソースファイルにプリプロセッサを実行し、結果を stdout に出力しますが、コンパイルはしません。 | 
| -g | デバッグ用にコンパルします。 | 
| -g0 | デバッグ用にコンパイルしますが、インライン機能は無効にしません。 | 
| -H | インクルードされるファイルのパス名を出力します。 | 
| -keeptmp | コンパイル中に作成されたすべての一時ファイルを残します。 | 
| -migration | 以前のコンパイラからの移行に関する情報の参照先を表示します。 | 
| -P | ソースの前処理だけを行い、.i ファイルに出力します。 | 
| -Qoption | オプションをコンパイル中の各処理に直接渡します。 | 
| -readme | README ファイルの内容を表示します。 | 
| -s | 実行可能ファイルからシンボルテーブルを取り除きます。 | 
| -temp=dir | 一時ファイルのディレクトリを指定します。 | 
| -verbose=vlst | コンパイラの冗長性を制御します。 | 
| -xcheck | スタックオーバーフローの実行時検査を追加します。 | 
| -xdumpmacros | 定義内容、定義および解除された位置、使用されている場所に関する情報を出力します。 | 
| -xe | 構文と意味のエラーのチェックだけを行います。 | 
| -xhelp=flags | コンパイラオプションの要約を一覧表示します。 | 
| -xport64 | 32 ビットアーキテクチャーから 64 ビットアーキテクチャーへの移植中の一般障害について警告します。 | 
| -xs | オブジェクト (.o) ファイルなしに dbx でデバッグできるようにします。 | 
| -xsb | ソースコードブラウザ用のテーブル情報を作成します。 | 
| -xsbfast | ソースブラウザ情報を作成するだけでコンパイルはしません。 | 
| オプション | 処理 | 
|---|---|
| -fma | (SPARC) 浮動小数点の Fused Multiply-Add 命令の自動生成を有 効にします。 | 
| -fns[={no|yes}] | (SPARC) SPARC 非標準浮動小数点モードを有効または無効にします。 | 
| -fprecision=p | x86: 浮動小数点精度モードを設定します。 | 
| -fround=r | 起動時に IEEE 丸めモードを有効にします。 | 
| -fsimple=n | 浮動小数点最適化の設定を行います。 | 
| -fstore | x86: 浮動小数点式の精度を強制的に使用します。 | 
| -ftrap=tlst | 起動時に IEEE トラップモードを有効にします。 | 
| -nofstore | x86: 強制された式の精度を無効にします。 | 
| -xlibmieee | 例外時に libm が数学ルーチンに対し IEEE 754 値を返します。 | 
| オプション | 処理 | 
|---|---|
| -compat | コンパイラの主要リリースとの互換モードを設定します。 | 
| -features=alst | C++ の各機能を有効化または無効化します。 | 
| -xchar | 文字型が符号なしと定義されているシステムからのコードの移行を容易に行えるようにします。 | 
| -xldscope | 共有ライブラリをより速くより安全に作成するため、変数と関数の定義のデフォルトリンカースコープを制御します。 | 
| -xthreadvar | (SPARC) デフォルトのスレッドローカルな記憶装置へのアクセスモードを変更します。 | 
| -xtrigraphs | 文字表記シーケンスを認識します。 | 
| -xustr | 16 ビット文字で構成された文字リテラルを認識します。 | 
| オプション | 処理 | 
|---|---|
| -Bbinding | ライブラリのリンク形式を、シンボリック、動的、静的のいずれかから指定します。 | 
| -d{y|n} | 実行可能ファイル全体に対して動的ライブラリを使用できるかどうか指定します。 | 
| -G | 実行可能ファイルではなく動的共有ライブラリを構築します。 | 
| -hname | 生成される動的共有ライブラリに名前を割り当てます。 | 
| -i | ld(1) がどのような LD_LIBRARY_PATH 設定も無視します。 | 
| -Ldir | dir に指定したディレクトリを、ライブラリの検索に使用するディレクトリとして追加します。 | 
| -llib | リンカーのライブラリ検索リストに liblib.a または liblib.so を追加します。 | 
| -library=llst | 特定のライブラリとそれに対応するファイルをコンパイルとリンクに強制的に組み込みます。 | 
| -mt | マルチスレッド化したコードのコンパイルとリンクを行います。 | 
| -norunpath | ライブラリのパスを実行可能ファイルに組み込みません。 | 
| -Rplst | 動的ライブラリの検索パスを実行可能ファイルに組み込みます。 | 
| -staticlib=llst | 静的にリンクする C++ ライブラリを指定します。 | 
| -xar | アーカイブライブラリを作成します。 | 
| -xbuiltin[=opt] | 標準ライブラリ呼び出しの最適化を有効または無効にします。 | 
| -xia | (SPARC) 適切な区間演算ライブラリをリンクし、浮動小数点環境を設定します。 | 
| -xlang=l[,l] | 該当する実行時ライブラリをインクルードし、指定された言語に適切な実行時環境を用意します。 | 
| -xlibmieee | 例外時に libm が数学ルーチンに対し IEEE 754 値を返します。 | 
| -xlibmil | 最適化のために、選択された libm ライブラリルーチンをインライン展開します。 | 
| -xlibmopt | 最適化された数学ルーチンのライブラリを使用します。 | 
| -xlic_lib=sunperf | (SPARC) Sun Performance LibraryTM とリンクします。C++ の場合、-library=sunperf は、このライブラリをリンクするために適した方法です。 | 
| -xnativeconnect | オブジェクトファイルと以降の共有ライブラリ内にインタフェース情報を含めることで、共有ライブラリが JavaTM プログラミング言語のコードとインタフェースをとれるようにします。 | 
| -xnolib | デフォルトのシステムライブラリとのリンクを無効にします。 | 
| -xnolibmil | コマンド行の -xlibmil を取り消します。 | 
| -xnolibmopt | 数学ルーチンのライブラリを使用しません。 | 
| オプション | 処理 | 
|---|---|
| -xlic_lib=sunperf | (SPARC) Sun Performance Library とリンクします。C++ の場合、-library=sunperf は、このライブラリをリンクするために適した方法です。 | 
| -xlicinfo | ライセンスサーバー情報を表示します。 | 
次のオプションは、現在は廃止されているためにコンパイラに受け入れられないか、将来のリリースでは削除されます。
| オプション | 処理 | 
|---|---|
| -library=%all | 将来のリリースで削除されます。 | 
| -noqueue | ライセンス情報のキューイングを行いません。 | 
| -ptr | コンパイラは無視します。将来のリリースのコンパイラがこのオプションを別の意味で使用する可能性もあります。 | 
| -vdelx | 将来のリリースで削除されます。 | 
| -xcg89 | -xtarget=ss2 を使用します。 | 
| -xnativeconnect | 廃止。これに代わるオプションはありません。 | 
| -xprefetch=yes | 代わりに - xprefetch=auto,explicit を使用します。 | 
| -xprefetch=no | 代わりに -xprefetch=no%auto,no%explicit を使用します。 | 
| オプション | 処理 | 
|---|---|
| -c | コンパイルのみ。オブジェクト (.o) ファイルを作成しますが、リンクはしません。 | 
| -dryrun | ドライバがコンパイラに渡すオプションを表示しますが、コンパイルはしません。 | 
| -E | C++ ソースファイルにプリプロセッサを実行し、結果を stdout に出力しますが、コンパイルはしません。 | 
| -erroff | コンパイラの警告メッセージを抑止します。 | 
| -errtags | 各警告メッセージのメッセージタグを表示します。 | 
| -errwarn | 指定の警告メッセージが出力されると、cc はエラーステータスを返して終了します。 | 
| -filt | コンパイラがリンカーエラーメッセージに適用するフィルタリングを抑止します。 | 
| -G | 実行可能ファイルではなく動的共有ライブラリを構築します。 | 
| -H | インクルードされるファイルのパス名を出力します。 | 
| -migration | 以前のコンパイラからの移行に関する情報の参照先を表示します。 | 
| -o filename | 出力ファイルや実行可能ファイルの名前を filename にします。 | 
| -P | ソースの前処理だけを行い、.i ファイルに出力します。 | 
| -Qproduce sourcetype | CC ドライバに sourcetype (ソースタイプ) 型のソースコードを生成するよう指示します。 | 
| -s | 実行可能ファイルからシンボルテーブルを取り除きます。 | 
| -verbose=vlst | コンパイラの冗長性を制御します。 | 
| +w | 必要に応じて追加の警告を出力します。 | 
| -w | 警告メッセージを抑止します。 | 
| -xdumpmacros | 定義内容、定義および解除された位置、使用されている場所に関する情報を出力します。 | 
| -xe | ソースファイルの構文と意味のチェックだけを行い、オブジェクトや実行可能コードの出力はしません。 | 
| -xhelp=flags | コンパイラオプションの要約を一覧表示します。 | 
| -xhelp=readme | README ファイルの内容を表示します。 | 
| -xM | メイクファイルの依存情報を出力します。 | 
| -xM1 | 依存情報の生成は行いますが、 /usr/include の組み込みはしません。 | 
| -xsb | ソースコードブラウザ用のテーブル情報を作成します。 | 
| -xsbfast | ソースブラウザ情報を作成するだけでコンパイルはしません。 | 
| -xtime | コンパイル処理ごとの実行時間を報告します。 | 
| -xwe | ゼロ以外の終了状態を返すことによって、すべての警告をエラーに変換します。 | 
| -z arg | 
| オプション | 処理 | 
|---|---|
| -fast | 一部のプログラムで最適な実行速度が得られるコンパイルオプションの組み合わせを選択します。 | 
| -fma | (SPARC) 浮動小数点の Fused Multiply-Add 命令の自動生成を有効にします。 | 
| -g | パフォーマンスの解析 (およびデバッグ) に備えてプログラムを用意するようにコンパイラとリンカーの両方に指示します。 | 
| -s | 実行可能ファイルからシンボルテーブルを取り除きます。 | 
| -m32|-m64 | コンパイルされたバイナリオブジェクトのメモリーモデルを指定します。 | 
| -xalias_level | コンパイラで、型に基づく別名の解析および最適化を実行するように指定します。 | 
| -xarch=isa | ターゲットのアーキテクチャー命令セットを指定します。 | 
| -xbinopt | あとで最適化、変換、分析を行うために、バイナリを準備します。 | 
| -xbuiltin[=opt] | 標準ライブラリ呼び出しの最適化を有効または無効にします。 | 
| -xcache=c | (SPARC) オプティマイザのターゲットキャッシュプロパティーを定義します。 | 
| -xcg89 | 一般的な SPARC アーキテクチャー用のコンパイルを行います。 | 
| -xcg92 | SPARC V8 アーキテクチャー用のコンパイルを行います。 | 
| -xchip=c | ターゲットのプロセッサチップを指定します。 | 
| -xF | リンカーによる関数と変数の順序変更を有効にします。 | 
| -xinline=flst | どのユーザーが作成したルーチンをオプティマイザでインライン化するかを指定します。 | 
| -xipo | 内部手続きの最適化を実行します。 | 
| -xlibmil | 最適化のために、選択された libm ライブラリルーチンをインライン展開します。 | 
| -xlibmopt | 最適化された数学ルーチンライブラリを使用します。 | 
| -xlinkopt | (SPARC) オブジェクトファイル内のあらゆる最適化のほかに、結果として出力される実行可能ファイルや動的ライブラリのリンク時最適化も行います。 | 
| -xmemalign=ab | (SPARC) メモリーの予想される最大境界整列と境界整列していないデータアクセスの動作を指定します。 | 
| -xnolibmil | コマンド行の -xlibmil を取り消します。 | 
| -xnolibmopt | 数学ルーチンのライブラリを使用しません。 | 
| -xOlevel | 最適化レベルを level にします。 | 
| -xpagesize | スタックとヒープの優先ページサイズを設定します。 | 
| -xpagesize_heap | ヒープの優先ページサイズを設定します。 | 
| -xpagesize_stack | スタックの優先ページサイズを設定します。 | 
| -xprefetch[=lst] | (SPARC) 先読みをサポートするアーキテクチャーで先読み命令を有効にします。 | 
| -xprefetch_level | -xprefetch=auto を設定したときの先読み命令の自動挿入を制御します。 | 
| -xprofile | (SPARC) 実行時プロファイルデータを収集したり、このデータを使って最適化します。 | 
| -xregs=rlst | (SPARC) 一時レジスタの使用を制御します。 | 
| -xsafe=mem | (SPARC) メモリーに関するトラップを起こさないものとします。 | 
| -xspace | (SPARC) コードサイズが大きくなるような最適化は行いません。 | 
| -xtarget=t | ターゲットの命令セットと最適化のシステムを指定します。 | 
| -xthreadvar | (SPARC) デフォルトのスレッドローカルな記憶装置へのアクセスモードを変更します。 | 
| -xunroll=n | 可能な場合は、ループを展開します。 | 
| -xvis | (SPARC) VISTM 命令セットに定義されているアセンブリ言語テンプレートをコンパイラが認識します。 | 
| オプション | 処理 | 
|---|---|
| -Dname[=def] | シンボル name をプリプロセッサに定義します。 | 
| -E | C++ ソースファイルにプリプロセッサを実行し、結果を stdout に出力しますが、コンパイルはしません。 | 
| -H | インクルードされるファイルのパス名を出力します。 | 
| -P | ソースの前処理だけを行い、.i ファイルに出力します。 | 
| -Uname | プリプロセッサシンボル name の初期定義を削除します。 | 
| -xM | メイクファイルの依存情報を出力します。 | 
| -xM1 | 依存情報を生成しますが、/usr/include は除きます。 | 
| オプション | 処理 | 
|---|---|
| -p | prof でプロファイル処理するためのデータを収集するオブジェクトコードを用意します。 | 
| -xa | プロファイル用のコードを生成します。 | 
| -xpg | gprof プロファイラによるプロファイル処理用にコンパイルします。 | 
| -xprofile | (SPARC) 実行時プロファイルデータを収集したり、このデータを使って最適化します。 | 
| オプション | 処理 | 
|---|---|
| -migration | 以前のコンパイラからの移行に関する情報の参照先を表示します。 | 
| -xhelp=flags | コンパイラオプションの要約を一覧表示します。 | 
| -xhelp=readme | README ファイルの内容を表示します。 | 
| オプション | 処理 | 
|---|---|
| -H | インクルードされるファイルのパス名を出力します。 | 
| -Ipathname | include ファイル検索パスに pathname を追加します。 | 
| -I- | インクルードファイル検索規則を変更します。 | 
| -xM | メイクファイルの依存情報を出力します。 | 
| -xM1 | 依存情報を生成しますが、/usr/include は除きます。 | 
| オプション | 処理 | 
|---|---|
| -instances=a | テンプレートインスタンスの位置とリンケージを制御します。 | 
| -ptipath | テンプレートソースの検索ディレクトリを追加指定します。 | 
| -template=wlst | さまざまなテンプレートオプションを有効または無効にします。 | 
| オプション | 処理 | 
|---|---|
| -mt | マルチスレッド化したコードのコンパイルとリンクを行います。 | 
| -xsafe=mem | (SPARC) メモリーに関するトラップを起こさないものとします。 | 
| -xthreadvar | (SPARC) デフォルトのスレッドローカルな記憶装置へのアクセスモードを変更します。 |