C++ ユーザーズガイド |
第 3 章
C++ コンパイラオプション
この章では、Solaris 2.6、Solaris 7、および Solaris 8 で動作する
CC
コンパイラのコマンド行オプションについて詳しく説明します。ここで説明する機能は、特に断りがない限りすべてのプラットフォームに適用されます。特定のプラットフォームだけに有効な機能は SPARC または IA と明示します。詳細は、「はじめに」の「マルチプラットフォーム対応」を参照してください。
表 3-1 オプションの構文形式の例 -option
1-E
-option
value*-I
pathname-option=
value-xunroll=4
-option
value-o
filename
1 option
はオプション名、value は値、pathname はパス名、filename はファイル名を示します。
各オプションの説明での表記規則は 「書体と記号について」を参照してください。
大括弧、括弧、中括弧、パイプ記号、省略記号は、オプションの説明に使用しているもので、オプションの一部ではありません。
-l
lib オプションは、ライブラリlib
lib.a
(またはlib
lib.so
) とリンクするときに使用します。ライブラリが正しい順序で検索されるように、-l
lib オプションは、ソースやオブジェクトのファイル名の後に指定する方が安全です。- 一般にコンパイラオプションは左から右に処理され、マクロオプション (他のオプションを含むオプション) は条件に応じて内容が変更されます (ただし
-U
オプションだけは、すべての-D
オプション後に処理されます)。これはリンカーオプションには当てはまりません。-I
、-L
、-pti
、-R
オプションで指定した内容は累積され、上書きはされません。ソースファイル、オブジェクトファイル、ライブラリは、コマンド行に指定された順序でコンパイルおよびリンクされます。
機能別に見たオプションの要約
この節には、参照しやすいように、コンパイラオプションが機能別に分類されています。
コード生成オプション
デバッグオプション
浮動小数点オプション
言語オプション
表 3-5 言語オプション コンパイラの主要リリースとの互換モードを設定する。 -compat
さまざまな C++ 言語機能を有効または無効にする。 -features=
alst
ライブラリオプション
ライブラリリンクオプションの要約をアルファベット順に示します。
ライセンスオプション
表 3-7 ライセンスオプション ライセンスの待ち行列化を無効にする。 -noqueue
(SPARC) Sun Performance LibraryTM とリンクする。 -xlic_lib=sunperf
ライセンスサーバー情報を表示する。 -xlicinfo
廃止オプション
表 3-8 廃止オプション コンパイラは無視する。将来のリリースのコンパイラがこのオプションを別の意味で使用する可能性もある。 -ptr
将来のリリースで削除される。 -vdelx
出力オプション
パフォーマンスオプション
パフォーマンスオプションの要約をアルファベット順に示します。
プリプロセッサオプション
プリプロセッサオプションの要約をアルファベット順に示します。
プロファイルオプション
プロファイルオプションの要約についてアルファベット順に示します。
表 3-12 プロファイルオプション prof
でプロファイル処理するためのデータを収集するオブジェクトコードを用意する。-p
プロファイル処理のためのコードを生成する。 -xa
gprof
プロファイラによるプロファイル処理用にコンパイルする。-xpg
実行時プロファイルデータを収集したり、このデータを使って最適化する。 -xprofile=tcov
リファレンスオプション
次のオプションはコンパイラ情報を簡単に参照するためのものです。
表 3-13 リファレンスオプション 以前のコンパイラからの移行に関する情報の参照先を表示する。 -migration
コンパイラオプションの要約を一覧表示する。 -xhelp= flags
README ファイルの内容を表示する。 -xhelp= readme
ソースオプション
表 3-14 ソースオプション #include
ファイルの検索パスに pathname を追加する。-I
pathnameメークファイル依存情報を出力する。 -x
M依存情報を生成するが、 /usr/include
は除く。-x
M1
テンプレートオプション
表 3-15 テンプレートオプション テンプレートインスタンスの位置とリンケージを制御する。 -instances=
aテンプレートソースの検索ディレクトリを追加指定する。 -pti
pathさまざまなテンプレートオプションを有効または無効にする。 -template=
w
スレッドオプション
表 3-16 スレッドオプション マルチスレッドコード用のコンパイルとリンクを行う。 -mt (SPARC) メモリーに関するトラップを起こさないものとする。 -x
safe=mem
オプション情報の構成
簡単に情報を検索できるように、次の見出しに分けてコンパイラオプションを説明しています。オプションが他のオプションで置き換えられたり、他のオプションと同じである場合、詳細については他のオプション説明を参照してください。
オプションの一覧
-386
(IA)
-xtarget=386
と同じです。このオプションは、下位互換のためだけに用意されています。
-486
(IA)
-xtarget=486
と同じです。このオプションは、下位互換のためだけに用意されています。
-a
-B
bindingライブラリのリンク形式を、シンボリックか、動的 (共有ライブラリ) にするか、静的 (共有でないライブラリ) のいずれかからを指定します。
-B
オプションを使用すれば、同じコマンド行で指定を何回も切り替えることができます。このオプションはリンカー (ld
) に渡されます。
注 - Solaris 7 および Solaris 8 プラットフォームでは、必ずしもすべてのライブラリが静的ライブラリとして使用できるわけではありません。
値
(
-B
と binding との間に空白があってはなりません。)デフォルト
相互の関連性
C++ のデフォルトのライブラリを静的にリンクするには、
-staticlib
オプションを使用します。
-Bstatic
および-Bdynamic
オプションは、デフォルトで使用されるライブラリのリンクにも影響します。デフォルトのライブラリを動的にリンクするには、最後に指定する-B
が-Bdynamic
でなければなりません。例
次の例では、
lib
foo.so
があってもlib
foo.a
がリンクされます。他のすべてのライブラリは動的にリンクされます。
example%CC a.o -Bstatic -lfoo -Bdynamic
警告
コンパイルとリンクを別々に行う場合で。コンパイル時に
-B
binding オプションを使用した場合は、このオプションをリンク時にも指定する必要があります。共有ライブラリを互換モード (
-compat[=4]
) で作成する場合、そのライブラリに例外が含まれる場合は、-Bsymbolic
を使用しないでください。必要な例外の捕獲に失敗してしまう可能性があります。関連項目
-nolib
、staticlib
、ld
(1)、「標準ライブラリの静的リンク」、『リンカーとライブラリ』
-c
コンパイルのみ。オブジェクト
.o
ファイルを作成しますが、リンクはしません。この オプションは
ld
によるリンクを抑止し、各ソースファイルに対する.o
ファイルを 1 つずつ生成するように、CC
ドライバに指示します。コマンド行にソースファイルを 1 つだけ指定する場合には、-o
オプションでそのオブジェクトファイルに明示的に名前を付けることができます。例
CC -c x.cc
と入力すると、x.o
というオブジェクトファイルが生成されます。
CC -c x.cc -o y.o
と入力すると、y.o
というオブジェクトファイルが生成
されます。警告
コンパイラは、入力ファイル (
.c
、.i
) に対するオブジェクトコードを作成する際に、.o
ファイルを作業ディレクトリに作成します。リンク手順を省略すると、この.o
ファイルは削除されません。関連項目
-cg[89|92]
-compat
[=(4|5)]
コンパイラの主要リリースとの互換モードを設定します。このオプションは、
__SUNPRO_CC_COMPAT
と__cplusplus
マクロを制御します。C++ コンパイラには主要なモードが 2 つあります。1 つは互換モードで、4.2 コンパイラで定義された ARM の意味解釈と言語が有効です。もう1 つは標準モードです。このモードでは、構文は ANSI/ISO 標準に従っていなければなりません。これらのモードには互換性はありません。ANSI/ISO 標準では、名前の符号化、vtable の配置、その他の ABI の細かい点で互換性のない変更がかなり必要であるためです。これらのモードは、次に示す
-compat
オプションで指定します。値
デフォルト
-compat
オプションを指定しないと、-compat=5
が使用されます。
-compat
だけを指定すると、-compat=4
が使用されます。
__SUNPRO_CC
は、-compat
の設定に関係なく0x510
に設定されます。相互の関連性
-compat [=4}
を使用する場合には、-xarch=v9
、-xarch=v9a
、-xarch=v9b
はサポートされません。関連項目
+d
相互の関連性
デバッグオプション
-g
を指定すると、このオプションが自動的に有効になります。関連項目
-D
name[=def]プリプロセッサに対してマクロシンボル名 name を def と定義します。
このオプションは、ソースファイルの先頭に
#define
指令を記述するのと同じです。-D
オプションは複数指定できます。値
次の表は、事前に定義されているマクロを示しています。これらの値は、
#ifdef
のようなプリプロセッサに対する条件式の中で使用できます。
表 3-18 SPARC と IA 用の事前定義シンボル __ARRAYNEW
「配列」形式の operator
new
とoperator
delete
を有効にしてコンパイルした場合に使用される。
詳細は-features=[no%]arraynew
を参照__BOOL
ブール型を有効にした場合に使用される。詳細は -features=[no%]bool
を参照__BUILTIN_VA_ARG_INCR
varargs.h
、stdarg.h
、sys/varags.h
のキーワードが__builtin_alloca
、__builtin_va_alist
、__builtin_va_arg_incr
の場合に使用される。__cplusplus
__DATE__
__FILE__
__ LINE__
__STDC__
__ sun
sun
「相互の関連性」を参照。 __SUNPRO_CC=0x510
__SUNPRO_CC
の値はコンパイラのリリース番号を表す。__SUNPRO_CC_COMPAT=(4|5)
「-compat [=(4|5)]」を参照。 __SVR4
__TIME__
__'
uname -s'_'uname -r'uname -s は uname
-s
の出力で、uname -r はuname
-r
の出力。無効な文字 (ピリオドなど) は下線で置き換えられる(例:-D__SunOS_5_7
、-D__SunOS_5_8
)。__unix
unix
「相互の関連性」を参照。
表 3-19 UNIX 用の事前定義シンボル _WCHAR_T
表 3-20 SPARC 用の事前定義シンボル __sparc
32 ビットコンパイルモードのみ sparc
「相互の関連性」を参照。
表 3-21 SPARC v9 用の事前定義シンボル __sparcv9
64 ビットコンパイルモードのみ
表 3-22 IA 用の事前定義シンボル __i386
i386
「相互の関連性」を参照。
デフォルト
相互の関連性
+p
が使用されている場合は、sun
、unix
、sparc
、i386
は定義されません。関連項目
-d(y|n)
実行可能ファイル全体に対して動的ライブラリを使用できるかどうか指定します。
このオプションは、コマンド行では 1 度だけしか使用できません。
値
値 意味 -dy
リンカーで動的リンクを実行します。 -dn
リンカーで静的リンクを実行します。
デフォルト
関連項目
-dalign
(SPARC ) 可能な場合には、ダブルワードのロードとストア命令を生成してパフォーマンス向上を図ります。
このオプションは、
double
型のデータがすべてdouble
の境界から始まることを前提としています。警告
あるプログラム単位を
-dalign
でコンパイルした場合は、プログラムのすべての単位を-dalign
でコンパイルしなければなりません。そうしないと予期しない結果が生じることがあります。
-dryrun
ドライバによって作成されたコマンドを表示しますが、コンパイルはしません。
このオプションは、コンパイルドライバが作成したサブコマンドの表示のみを行い、実行はしないように
CC
ドライバ に指示します。
-E
ソースファイルに対してプリプロセッサを実行しますが、コンパイルはしません。
C++ のソースファイルに対してプリプロセッサだけを実行し、結果を
stdout
(標準出力) に出力するようCC
ドライバに指示します。コンパイルは行われません。したがって.o
ファイルは生成されません。このオプションを使用すると、プリプロセッサで作成されるような行番号情報が出力に含まれます。
例
このオプションは、プルプロセッサの処理結果を知りたいときに便利です。たとえば、次のようなプログラム
foo.cc
があるとします。
コード例 3-1 foo.cc
#if __cplusplus < 199711Lint power(int, int);#elsetemplate <> int power(int, int);#endifint main () {int x;x=power(2, 10);}
コード例 3-2 -E
オプションを使用したときのfoo.cc
の出力 example%CC -E foo.cc
#4 "foo.cc"template < > int power ( int , int ) ;int main ( ) {int x ;x = power ( 2 , 10 ) ;}警告
テンプレートを使用する場合は、このオプションの結果を C++ コンパイラの入力に使用することはできません。
関連項目
+e(0|1)
互換モード (
-compat[=4]
) のときに仮想テーブルの生成を制御します。標準モード (デフォルトモード) のときには無効な指定として無視されます。
値 意味 0
仮想テーブルを生成せず、必要とされているテーブルへの外部参照を生成します。 1
仮想関数を使用して定義したすべてのクラスごとに仮想テーブルを生成します。
相互の関連性
このオプションを使用してコンパイルする場合は、
-features=no%except
オプションも使用してください。使用しなかった場合は、例外処理で使用される内部型の仮想テーブルがコンパイラによって生成されます。関連項目
-fast
コンパイルオプションの最適な組み合わせを選択し、実行速度を最適化します。
このオプションは、コードをコンパイルするマシン上でコンパイラオプションの最適な組み合わせを選択して実行速度を向上するマクロです。
拡張
このオプションは、次のコンパイラオプションを組み合せて、多くのアプリケーションのパフォーマンスをほぼ最大にします。
表 3-23 -fast
展開-dalign
○ − -fns
○ − -fsimple=2
○ − -ftrap=%none
○ ○ -nofstore
− ○ -xlibmil
○ ○ -xlibmopt
○ ○ -xO5
○ ○ -xtarget=native
○ ○
相互の関連性
-fast
マクロから展開されるコンパイラオプションが、指定された他のオプションに影響を与えることがあります。たとえば、次のコマンドの-fast
マクロの展開には-xtarget=native
が含まれています。そのため、ターゲットのアーキテクチャは-xarch
に指定された SPARC-V9 ではなく、32 ビットアーキテクチャのものに戻されます。
example%
CC -xarch=v9 -fast test.cc
example%
CC -fast -xarch=v9 test.cc
個々の相互の関連性については、各オプションの説明を参照してください。
このコード生成オプション、最適化レベル、インラインテンプレートファイルの使用よりも、その後で指定するフラグの方が優先されます (例を参照)。ユーザーの指定した最適化レベルは、以前に設定された最適化レベルを無効にします。
-fast
オプションには-fns
-ftrap=%none
が含まれているため、このオプションによってすべてのトラップが無効になります。例
次のコンパイラコマンドでは、最適化レベルは
-x03
になります。
example%
CC -fast -xO3
次のコンパイラコマンドでは、最適化レベルは
-xO5
になります。
examle%
CC -xO3 -fast
警告
コンパイラで
-fast
オプションを指定すると、そのコードの移植性は失われます。たとえば、UltraSPARC-III システムで次のコマンドを指定すると、生成されるバイナリは UltraSPARC-II システムでは動作しません。
example%
CC -fast test.cc
IEEE 標準の浮動小数点演算を使用しているプログラムには、
-fast
を指定しないでください。計算結果が違ったり、プログラムが途中で終了する、あるいは予期しないSIGFPE
シグナルが発生する可能性があります。以前のリリースの SPARC では、
-fast
マクロは-fsimple=1
に展開されました。現在では、-fsimple=2
に展開されます。以前のリリースでは、
-fast
マクロは-xO4
に展開されました。現在では、-xO5
に展開されます。
注 - 以前の SPARC リリースでは-fast
マクロに-fnonstd
が含まれていましたが、このリリースでは含まれていません。-fast
では、非標準浮動小数点モードは初期化されません。『数値計算ガイド』とieee_sun
(3M) のマニュアルページを参照してください。
関連項目
-dalign
、-fns
、-fsimple
、-ftrap=%none
、-libmil
、-nofstore
、-xO5
、-xlibmopt
、-xtarget=native
-features
=a[,...a]コンマで区切って指定された
C++
言語のさまざまな機能を、有効または無効にします。
値
互換モード (
-compat[=4
]) と標準モード (デフォルトのモード) の両方で、a に次の値の 1 つを指定できます。
標準モード (デフォルトのモード) では、a にはさらに次の値の1つを指定できます。
表 3-25 標準モードだけに使用できる -features
オプション[no%]strictdestrorder
静的記憶領域にあるオブジェクトを破棄する順序に関する、C++ 標準の必要条件に従います [従いません]
互換モード (
-compat[=4]
) では、a にはさらに次の値の 1 つを指定できます。
注 - [no%
]castop
は、C++ 4.2 コンパイラ用に作成されたメークファイルとの互換性を維持するために使用できますが、C++ 5.0 および Sun Workshop 6 C++ コンパイラには影響はありません。新しい書式の型変換 (const_cast
、dynamic_cast
、reinterpret_cast
、static_cast
) は常に認識され、無効にすることはできません。
デフォルト
関連項目
-flags
-fnonstd
(IA) 浮動小数点ハードウェアの非標準的な初期設定を行います。
これらの結果は
SIGFPE
シグナルに変換されますが、プログラムにSIGFPE
ハンドラがない場合は、メモリーダンプを行なってプログラムを終了します。ただし、コアダンプのサイズがゼロに設定されている場合を除きます。デフォルト
-fnonstd
を指定しないと、IEEE 754 浮動小数点演算例外が起きても、プログラムは異常終了しません。アンダーフローは段階的です。関連項目
-fns[=(no|yes)]
(SPARC) SPARC 非標準浮動小数点モードを有効または無効にします。
-fns=yes
(または-fns
) を指定すると、プログラムが実行を開始するときに、非標準浮動小数点モードが有効になります。このオプションを使うと、
-fns
を含む他のマクロオプション (-fast
など) の後で非標準と標準の浮動小数点モードを切り替えることができます (「例」を参照)。一部の SPARC デバイスでは、非標準浮動小数点モードで「段階的アンダーフロー」が無効にされ、非正規の数値を生成する代わりに、小さい値がゼロにフラッシュされます。さらに、このモードでは、非正規のオペランドが報告なしにゼロに置き換えられます。
段階的アンダーフローや、非正規の数値をハードウェアでサポートしない SPARC デバイスでは、
-fns=yes
(または-fns
) を使用すると、プログラムによってはパフォーマンスが著しく向上することがあります。値
yes
非標準浮動小数点モードを選択します。 no
標準浮動小数点モードを選択します。
デフォルト
-fns
を指定しないと、非標準浮動小数点モードは自動的には有効にされません。標準の IEEE 754 浮動小数点計算が行われます。つまり、アンダーフローは段階的です。
-fns
だけを指定すると、-fns=yes
とみなされます。例
次の例では、
-fast
は複数のオプションに展開され、その中には-fns=yes
(非標準浮動小数点モードを選択する) も含まれます。ところが、その後に続く-fns=no
が初期設定を変更するので、結果的には、標準の浮動小数点モードが使用されます。
example%
CC foo.cc -fast -fns=no
警告
非標準モードが有効になっていると、浮動小数点演算によって、IEEE 754 規格の条件に合わない結果が出力されることがあります。
1 つのルーチンを
-fns
でコンパイルした場合は、そのプログラムのすべてのルーチンを-fns
オプションでコンパイルする必要があります。そうしないと、予期しない結果が生じることがあります。このオプションは、SPARC プラットフォームでメインプログラムをコンパイルするときしか有効ではありません。IA プラットフォームでは、このオプションは無視されます。
-fns=yes
(または-fns
のみ) を使用したときに、通常は IEEE 浮動小数点トラップハンドラによって管理される浮動小数点エラーが発生すると、次のメッセージが返されることがあります。関連項目
-fprecision
=p(IA) デフォルト以外の浮動小数点精度モードを設定します。
-fprecision
オプションを指定すると、FPU (Floating Point Unit) 制御ワードの丸め精度モードのビットが設定されます。これらのビットは、基本演算 (加算、減算、乗算、除算、平方根) の結果をどの精度に丸めるかを制御します。値
single
IEEE 単精度値に丸めます。 double
IEEE 倍精度値に丸めます。 extended
利用可能な最大の精度に丸めます。
p が
single
かdouble
であれば、丸め精度モードは、プログラムの実行が始まるときに、それぞれsingle
かdouble
精度に設定されます。p がextended
であるか、-fprecision
フラグが使用されていなければ、丸め精度モードはextended
精度のままです。
single
精度の丸めモードでは、結果が 24 ビットの有効桁に丸められます。double
精度の丸めモードでは、結果が 53 ビットの有効桁に丸められます。デフォルトのextended
精度の丸めモードでは、結果が 64 ビットの有効桁に丸められます。このモードは、レジスタにある結果をどの精度に丸めるかを制御するだけであり、レジスタの値には影響を与えません。レジスタにあるすべての結果は、拡張倍精度形式の全範囲を使って丸められます。ただし、メモリーに格納される結果は、指定した形式の範囲と精度に合わせて丸められます。
float
型の公称精度はsingle
です。long
double
型の公称精度はextended
です。デフォルト
-fprecision
フラグを指定しないと、丸め精度モードはextended
になります。警告
このオプションは、IA プラットホームでメインプログラムをコンパイルするときしか有効ではありません。SPARC プラットホームでは、このオプションは無視されます。
-fround=
rこのオプションは、次に示す IEEE 754 丸めモードを設定します。
内容は、
ieee_flags
サブルーチンと同じです。これは実行時のモードを変更するために使用します。値
nearest
tozero
negative
positive最も近い数値に丸め、中間値の場合は偶数にします。
ゼロに丸めます。
負の無限大に丸めます。
正の無限大に丸めます。
デフォルト
-fround
オプションを指定しないと、丸めモードは-fround=nearest
になります。警告
1 つのルーチンを
-fround=
r でコンパイルした場合は、そのプログラムのすべてのルーチンを同じ-fround=
r オプションでコンパイルする必要があります。そうしないと、予期しない結果が生じることがあります。このオプションは、メインプログラムをコンパイルするときにだけ有効です。
-fsimple
[=n]このオプションで浮動小数点演算に影響する前提を設けることにより、オプティマイザで行う浮動小数点演算が簡略化されます。
値
n を指定する場合、0、1、2 のいずれかにしなければなりません。
デフォルト
-fsimple
を指定しないと、-fsimple=0
が使用されます。
-fsimple
を指定しても n の値を指定しないと、-fsimple=1
が使用されます。相互の関連性
警告
このオプションによって、IEEE 754 に対する適合性が損なわれることがあります。
関連項目
-fstore
(IA) このオプションを指定すると、コンパイラは、次の場合に浮動小数点の式や関数の値を代入式の左辺の型に変換します。つまり、その値はレジスタにそのままの型で残りません。
このオプションを無効にするには、
-nofstore
オプションを使用します。警告
丸めや切り捨てによって、結果がレジスタの値から生成される値と異なることがあります。
関連項目
-ftrap
=t[,...t]起動時に IEEE 754 トラップモードを有効に設定します。
このオプションは、プログラムの初期化時に設定される IEEE 754 トラップモードを設定しますが、
SIGFPE
ハンドラはインストールしません。トラップの設定とSIGFPE
ハンドラのインストールを同時に行うには、ieee_handler
を使用します。複数の値を指定すると、それらの値は左から右に処理されます。値
[no%]
形式のオプションは、下の例に示すように、%all
やcommon
フラグの意味を変更するときだけ使用します。これは、特定のトラップを明示的に無効にするものではありません。IEEE トラップを有効にする場合は、
-ftrap=common
の設定をお勧めします。デフォルト
-ftrap
を指定しないと、-ftrap=%none
が使用されます (トラップは自動的には有効にされません)。例
1 つ以上の値を指定すると、それらは左から右に処理されます。したがって、
-ftrap=%all,no%inexact
と指定すると、inexact
を除くすべてのトラップが設定されます。相互の関連性
モードは、実行時に
ieee_handler
(3M) で変更できます。警告
このオプションを使用してルーチンを 1 つコンパイルした場合は、プログラムのルーチンもすべて同じオプションを使用してコンパイルしてください。そうしないと、予期しない結果が生じることがあります。
-ftrap=inexact
のトラップは慎重に使用してください。-ftrap=inexact
では、浮動小数点の値が正確でないとトラップが発生します。たとえば、次の文ではこの条件が発生します。このオプションは、メインプログラムをコンパイルするときにだけ有効です。このオプションを使用する際には注意してください。IEEE トラップを有効にするには
-ftrap=common
を使用してください。関連項目
-G
コマンド行で指定したソースファイルはすべて、デフォルトで
-Kpic
オプションでコンパイルされます。テンプレートを使用する共有ライブラリを作成する場合は、通常、テンプレートデータベースでインスタンス化されているテンプレート関数を、共有ライブラリに組み込む必要があります。このオプションを使用すると、これらのテンプレートが必要に応じて共有ライブラリに自動的に追加されます。
相互の関連性
-c
(コンパイルのみのオプション) を指定しないと、次のオプションが ld に渡されます。警告
共有ライブラリの構築には、
ld
-G
ではなく、CC
-G
を使用してください。こうすると、CC
ドライバによって C++ に必要ないくつかのオプションがld
に自動的に渡されます。関連項目
-dy
、-Kpic
、-xcode=pic13
、-xildoff
、-ztext
、ld
(1) のマニュアルページ、『C++ ライブラリ・リファレンス』
-g
コンパイラとリンカーに、デバッガでデバッグ可能なファイルとプログラムを用意するように指示します。
- オブジェクトファイルと実行可能ファイルのシンボルテーブル内に、詳細情報 (スタブ) を生成する。
- 「支援関数」を生成する。デバッガはこれを呼び出して、デバッガの機能のいくつかを実現する。
- 関数のインライン生成を無効にする。
- 特定のレベルの最適化を無効にする。
相互の関連性
このオプションと
-xO
level を一緒に使用した場合、デバッグ情報が限定されます。詳細は、「-xOlevel」を参照してください。このオプションを使用するとき、最適化レベルが
-xO3
以下の場合、可能な限りのシンボリック情報とほぼ最高の最適化が得られます。末尾呼び出しの最適化とバックエンドのインライン化は無効です。このオプションを使用するとき、最適化レベルが
-xO4
以上の場合、可能な限りのシンボリック情報と最高の最適化が得られます。このオプションを指定すると、
+d
オプションが自動的に指定されます。このオプションを指定すると、
-xildon
が指定されてデフォルトのリンカーがインクリメンタルリンカーのオプションになるため、コンパイル、編集、デバッグのサイクルを効率的に実行できます。次の条件のどれかが真でない場合は、
ld
ではなくild
が起動されます。関連項目
+d
、-g0
、-xildoff
、-xildon
、-xs
、およびld
(1) のマニュアルページ、
『dbx
コマンドによるデバッグ』(スタブの詳細について)
-g0
デバッグ用のコンパイルとリンクを行いますが、インライン展開は行いません。
このオプションは、
+d
が有効化されないという点を除いて、-g
と同じです。関連項目
+d
、-g
、-xildon
、『dbx
コマンドによるデバッグ』
-H
現在のコンパイルに含まれている
#include
ファイルのパス名を標準エラー出力 (stderr
) に 1 行に 1 つずつ出力します。
-help
-h
name生成する動的共有ライブラリに名前 name を割り当てます。これはローダー用のオプションで、
ld
に渡されます。通常、-h
の後に指定する name (名前) は、-o
の後に指定する名前と同じでなければなりません。-h
と name の間には、空白文字を入れても入れなくてもかまいません。コンパイル時のローダーは、指定された名前を作成中の動的共有ライブラリに割り当て、そのライブラリのイントリンシック名 (固有名) としてライブラリの中に記録します。
-h
name (名前) オプションを指定しないと、イントリンシック名はライブラリファイルに記録されません。実行可能ファイルはすべて、必要な共有ライブラリファイルのリストを持っています。実行時のリンカーは、ライブラリを実行可能ファイルにリンクするとき、ライブラリのイントリンシック名をこの共有ライブラリファイルのリストの中にコピーします。共有ライブラリにイントリンシック名がないと、リンカーは代わりにその共有ライブラリファイルのパス名を使用します。
例
example%
CC -G -o libx.so.1 -h libx.so.1 a.o b.o c.o
-i
リンカー
ld
はLD_LIBRARY_PATH
の設定を無視します。
-I
pathname
#include
ファイル検索パスに pathname を追加します。このオプションは、インクルードファイルの相対ファイル名 (スラッシュ以外の文字で始まるファイル名) リストに、pathname (パス名) を追加します。
プリプロセッサは、インクルードファイルを次の順序で検索します。
#include
"foo.h"
の形式のインクルードファイル (" "
で囲まれたもの) については、そのソースファイルを含むディレクトリ内を検索する- <
foo.h
> の形式のインクルードファイル (< > で囲まれたもの) については、そのソースファイルを含むディレクトリは検索しない-I
オプションで指定された名前を持つディレクトリ (もしあれば)- コンパイラ付属の C++ ヘッダーファイル、ANSI C ヘッダーファイル、および特別な目的のファイルが格納されているディレクトリ
/usr/include
ディレクトリ
注 - 標準ヘッダーの処理は上記とは異なります。詳細は、「標準ヘッダーの実装」を参照してください。
相互の関連性
-pti
path (パス) を使用しない場合、コンパイラは-I
pathname (パス) 内のテンプレートファイルを検索します。-pti
path の代わりに-I
pathname を使用してください。
-instances
=a値
デフォルト
-instances
を指定しないと、-instances=extern
が使用されます。関連項目
-keeptmp
コンパイル中に作成されたすべての一時ファイルを残しておきます。
このオプションを
-verbose=diags
と一緒に使用すると、デバックに便利です。関連項目
-KPIC
-Kpic
このオプションは、共有ライブラリを構築するためにソースファイルをコンパイルするときに使用します。大域データへの各参照は、大域オフセットテーブルにおけるポインタの間接参照として生成されます。各関数呼び出しは、手続きリンケージテーブルを通して PC 相対アドレス指定モードで生成されます。
-L
dirライブラリを検索するディレクトリに、dir (ディレクトリ) を追加します。
このオプションは
ld
に渡されます。コンパイラが提供するディレクトリよりも dir が先に検索されます。
-l
libライブラリ
lib
lib.a
またはlib
lib.so
をリンカーの検索ライブラリに追加します。このオプションは
ld
に渡されます。通常のライブラリは、名前がlib
lib.a
かlib
lib.so
の形式です (lib
と.a
または.so
の部分は必須です)。このオプションでは lib の部分を指定できます。コマンド行には、ライブラリをいくつでも指定できます。指定したライブラリは、-L
dir で指定された順に検索されます。相互の関連性
正しい順序でライブラリが検索されるようにするには、安全のため、必ずソースとオブジェクトの後に
-l
x を使用してください。警告
libthread
とリンクする場合は、ライブラリを正しい順序でリンクするために-lthread
ではなく-mt
を使用してください。POSIX スレッドを使用する場合は、
-mt
オプションと-lpthread
オプションを使ってリンクする必要があります。-mt
オプションが必要な理由は、libCrun
(標準モード) とlibC
(互換モード) がマルチスレッド対応アプリケーションに対してlibthread
を必要とするためです。関連項目
-L
dir、-mt
、『C++ ライブラリ・リファレンス』、『Tools.h++ 7.0.7 クラスライブラリ・リファレンスマニュアル』
-libmieee
-libmil
-library
=l[,...l]l に指定した、CC が提供するライブラリを、コンパイルとリンクに組み込みます。
値
互換モード
(-compat[=4])
の場合、l には次のいずれかを指定します。
標準モード (デフォルトモード) の場合、l には次のいずれかを指定します。
デフォルト
- 互換モード (
-compat[=4]
)
-library
を指定しないと、-library=%none,libC
が使用されます。-library=%none
または-library=no%libC
で特に除外されない限り、libC
ライブラリは常に含まれます。- 標準モード (デフォルトモード)
例
標準モードで
libCrun
以外の C++ ライブラリを除外してリンクするには、次のコマンドを使用します。
example%
CC -library=%none
標準モードで RogueWave の
Tools.h++
バージョン 7 ライブラリとiostream
ライブラリを使用するには、次のコマンドを使用します。
example%
CC -library=rwtools7,iostream
相互の関連性
-library
でライブラリを指定すると、適切な-I
パスがコンパイルで設定されます。リンクでは、適切な-L
、-Y P
、および-R
パスと、-l
オプションが設定されます。
-library
オプションを使用すると、指定したライブラリに対する-l
オプションが正しい順序で送信されるようになります。たとえば、-library=rwtools7,iostream
および-lirabary=iostream,rwtools7
のどちらでも、-l
オプションは、-lrwtool -liostream
の順序でld
に渡されます。指定したライブラリは、システムサポートライブラリよりも前にリンクされます。
RogueWave の
Tools.h++
ライブラリは同時に 1 つしか使用できません。RogueWave の
Tools.h++
バージョン 7 ライブラリは、従来の iostream を使って構築されています。このため、標準モードで Rouged Wave のTools.h++
のライブラリを使用する場合は、libiostream
も含める必要があります。詳細は、『C++ 移行ガイド』を参照してください。
libCstd
とlibiostream
の両方を含めた場合は、プログラム内で新旧両方の形式のiostream
(例:cout
とstd::cout
) を使用して、同じファイルにアクセスしないよう注意してください。同じプログラム内に標準iostream
と従来のiostream
が混在し、その両方のコードから同じファイルにアクセスすると、問題が発生する可能性があります。
libC
ともlibCrun
ともリンクしないプログラムは、C++ のすべての機能を使用できないことがあります。
-xnolib
を指定すると、-library
は無視されます。警告
これらのライブラリは安定したものではなく、リリースによって変わることがあります。
関連項目
-I、-l、-R、-Y P、-staticlib=
l、-xnolib、
「標準ライブラリヘッダーファイルに対する make の使用」
『C++ ライブラリ・リファレンス』、『Tools.h++7.0 ユーザーズガイド』、
『Tools.h++ 7.0 クラスライブラリ・リファレンスマニュアル』、
『Standard C++ Class Library Reference』(英語版のみ)
-library=no%cstd
オプションを使用して、ユーザー独自の C++ 標準ライブラリの使用を有効にする方法については、「C++ 標準ライブラリの置き換え」を参照してください。
-migration
以前のバージョンのコンパイラ用に作成されたソースコードの移行に関する情報の参照先を表示します。
-misalign
(SPARC) 通常はエラーになる、メモリー中の境界整列の誤ったデータを許可します。
以下に例を示します。
char b[100];int f(int * ar) {return *(int *) (b +2) + *ar;}このオプションは、プログラムの中に正しく境界整列されていないデータがあることをコンパイラに知らせます。したがって、境界整列が正しくない可能性があるデータに対しては、ロードやストアを非常に慎重に (つまり、1 度に 1 バイトずつ) 行う必要があります。このオプションを使用すると、実行速度が大幅に低下することがあります。低下する程度はアプリケーションによって異なります。
相互の関連性
SPARC プラットフォームで
#pragma pack
を使って、型のデフォルト境界整列よりも高い密度でデータをパックする場合は、アプリケーションのコンパイルとリンクに-misalign
オプションを指定する必要があります。境界整列が正しくないデータは、実行時に
ld
のトラップ機構によって処理されます。-misalign
オプションとともに最適化フラグ (-x0[1|2|3|4|5]
またはそれと同等のフラグ) を使用すると、ファイル境界整列の正しくないデータを正しい境界に整列に合わせるための命令がオブジェクトに挿入されます。この場合には、実行時不正境界整列トラップは生成されません。警告
できれば、プログラムの境界整列が正しい部分と境界整列が誤った部分をリンクしないでください。
コンパイルとリンクを別々に行う場合は、
-misalign
オプションをコンパイルコマンドとリンクコマンドの両方で指定する必要があります。
-mt
-D_REENTRANT
をプリプロセッサに渡します。-lthread
を正しい順序で ld に渡します。- 標準モード (デフォルトモード) では、
libthread
がlibCrun
よりも前にリンクされるようにします。- 互換モード (
-compat
) では、libthread
がlibC
よりも前にリンクされるようにします。アプリケーションやライブラリがマルチスレッド化されている場合は、
-mt
オプションが必要です。警告
libthread
とリンクする場合には、-lthread
ではなく-mt
オプションを使用してライブラリのリンク順序が正しくなるようにしてください。POSIX スレッドを使用する場合は、
-mt
オプションと-lpthread
オプションを使ってリンクする必要があります。-mt
オプションが必要な理由は、libCrun
(標準モード) とlibC
(互換モード) がマルチスレッド対応のアプリケーションに対してlibthread
を必要とするためです。コンパイルとリンクを別々に実行する場合で、コンパイルで
-mt
を使用した場合は、次の例に示すようにリンクでも-mt
を使用してください。そうしないと、予期しない結果が発生する可能性があります。
example%
CC -c -mt myprog.cc
example%
CC -mt myprog.o
関連項目
-xnolib
、『C++ プログラミング・ガイド』、『マルチスレッドのプログラミング』、『リンカーとライブラリ』、『C++ ライブラリ・リファレンス』
-native
-noex
-nofstore
このオプションを指定すると、次のどちらの場合でも、コンパイラは浮動小数点の式や関数の値を代入式の左辺の型に変換しません。つまり、レジスタの値はそのままです。
関連項目
-nolib
-nolibmil
-noqueue
ライセンスを確保できない場合、コンパイラはコンパイル要求を待ち行列に入れず、コンパイルもしないで終了します。メークファイルのテストには、ゼロ以外の状態が返されます。
-norunpath
実行可能ファイルに共有ライブラリへの実行時検索パスを組み込みません。
実行可能ファイルが共有ライブラリを使用する場合、コンパイラは通常、実行時のリンカーに対して共有ライブラリの場所を伝えるために構築を行なったパス名を知らせます。これは、
ld
に対して-R
オプションを渡すことによって行われます。このパスはコンパイラのインストール先によって決まります。このオプションは、標準以外の位置にインストールされたコンパイラで生成した実行可能ファイルを、プログラムのユーザーがその非標準の位置で使う必要がない場合に便利です。
相互の関連性
共有ライブラリをコンパイラのインストールされている位置 (デフォルトのインストール先は
/opt/SUNWspro/lib
) で使用し、かつ-norunpath
を使用する場合は、リンク時に-R
オプションを使うか、または実行時に環境変数LD_LIBRARY_PATH
を設定して共有ライブラリの位置を明示しなければなりません。そうすることにより、実行時リンカーはその共有ライブラリを見つけることができます。
-O
-O
level
-o
filename出力ファイルまたは実行可能ファイルの名前を filename (ファイル名) に指定します。
相互の関連性
コンパイラは、テンプレートインスタンスを格納する必要がある場合には、出力ファイルのディレクトリにあるテンプレートレポジトリに格納します。たとえば、次のコマンドでは、コンパイラはオブジェクトファイルを
./sub/a.o
に、テンプレートインスタンスを./sub/SunWS_cache
内のレポジトリにそれぞれ書き込みます。
example%
CC -o sub/a.o a.cc
コンパイラは、読み込むオブジェクトファイルに対応するテンプレートレポジトリからテンプレートインスタンスを読み取ります。たとえば、次のコマンドでは、コンパイラは
./sub1/SunWS_Cache
と./sub2/SunWS_cache
から読み取り、必要な場合は./SunWS_cache
に書き込みます。
example%
CC sub1/a.o sub2/b.o
詳細は、「テンプレートレポジトリ」を参照してください。
警告
このファイル名には、コンパイラが作成するファイルの型に合った接尾辞を指定してください。また、
CC
ドライバはソースファイルには上書きしないため、ソースファイルとは異なるファイルを指定する必要があります。
+p
デフォルト
+p
を指定しないと、コンパイラは非標準のプリプロセッサの表明を認識します。相互の関連性
-P
ソースの前処理だけでコンパイルはしません ( 接尾辞
.i
のファイルを出力します)。このオプションを指定すると、プリプロセッサが出力するような行番号情報はファイルに出力されません。
関連項目
-p
prof
でプロファイル処理するためのデータを収集するオブジェクトコードを作成します。-p
は実行内容を記録し、正常終了時にmon.out
というファイルを生成します。関連項目
-xpg
、-xprofile
、analyzer
(1) のマニュアルページ、Sun WorkShop の『プログラムのパフォーマンス解析』
-pentium
(IA)
-xtarget=pentium
と置き換えられています。
-pg
-PIC
-pic
-pta
-pti
pathこのオプションは
-I
pathname (パス名) によって設定された通常の検索パスに代わるものです。-pti
path (パス) フラグを使用した場合、コンパイラはこのパス上にあるテンプレート定義ファイルを検索し、-I
pathname フラグを無視します。
-pti
path よりも-I
pathname を使用すると混乱が起きにくくなります。関連項目
-pto
-ptr
このオプションは廃止されたため、コンパイル時には無視されます。
警告
-ptr
オプションは存在しても無視されますが、すべてのコンパイルコマンドから削除するようにしてください。これは将来のリリースで、-ptr
が以前とは異なる動作のオプションとして再実装される可能性があるためです。関連項目
レポジトリのディレクトリについては、「テンプレートレポジトリ」を参照してください。
-ptv
-Qoption
phase option[,...option]option (オプション) を phase (コンパイル段階) に渡します。
値
ccfe
ccfe
iropt
cg386
cg
codegen
cclink
cclink
ld
ld
例
次に示すコマンド行では、
ld
がCC
ドライバによって起動されたとき、-Qoption
で指定されたオプションの-i
と-m
がld
に渡されます。
example%
CC -Qoption ld -i,-m test.c
警告
意図しない結果にならないように注意してください。たとえば、
ccfe
に-features=bool,castop
を渡そうと次のように指示するとします。
-Qoption
ccfe -features=bool,castopしかしこの指定は、意図に反して次のように解釈されてしまいます。
-Qoption
ccfe -features=bool -Qoption ccfe castop
-Qoption
ccfe -features=bool,-features=castop
-qoption
phase option
-qp
-Qproduce
sourcetype
CC
ドライバに sourcetype (ソースタイプ) 型のソースコードを生成するよう指示します。sourcetype に指定する接尾辞の定義は次のとおりです。
.i
ccfe
が作成する前処理済みの
C++
のソースコード
.o
コードジェネレータ cg
が作成するオブジェクトファイル.s
cg
が作成するアセンブラソース
-qproduce
sourcetype
-R
pathname[
:...pathname]
複数のパス名も指定できます (例:
-R/path1:/path2
)。デフォルト
-R
オプションを指定しないと、出力オブジェクトに記録され、実行時リンカーに渡されるライブラリ検索パスは、-xarch
オプションで指定されたターゲットアーキテクチャ命令によって異なります (-xarc
を指定しないと、-xarch=generic
が使用されます)。
v9
、v9a
、v9b
install_dirctory /SUNWspro/lib/v9
上記以外の値 install_directory /SUNWspro/lib
標準インストールでは、install-directory は
/opt
です。相互の関連性
LD_RUN_PATH
環境変数が設定されている場合に、-R
オプションを指定すると、-R
に指定したパスが検索され、LD_RUN_PATH
のパスは無視されます。関連項目
-readme
-S
CC
ドライバはプログラムをコンパイルして、アセンブリソースファイルを作成します。しかし、プログラムのアセンブルは行いません。このアセンブリソースファイル名には、.s
という接尾辞が付きます。
-s
出力する実行可能ファイルからシンボリック情報をすべて削除します。このオプションは
ld
に渡されます。
-sb
-sbfast
-staticlib
=l[,...l]
-library
オプションに指定されている C++ ライブラリのうち (デフォルトを含む) どれを静的にリンクするのかを指定します。値
[no%]library library に指定できる値については 「-library=l[,...l]JDENG_NSUN_KAKKOEを参照してください。 %all
-library
オプションに指定したすべてのライブラリが静的にリンクされます。%none
静的にリンクするライブラリはありません。
デフォルト
-staticlib
を指定しないと、-staticlib=%none
が使用されます。例
-library
のデフォルト値はCrun
であるため、次のコマンド行は、libCrun
を静的にリンクします。
example%
CC -staticlib=Crun ← 正しい
これに対し、次のコマンド行は
libgc
をリンクしません。これは、-library
オプションで明示的に指定しない限り、libgc
はリンクされないためです。
example%
CC -staticlib=gc ← 誤り
libgc
を静的にリンクするには、次のコマンドを使用します。
example%
CC -library=gc -staticlib=gc ← 正しい
次のコマンドは、
librwtool
ライブラリを動的にリンクします。librwtool
はデフォルトのライブラリでもなく、-library
オプションでも選択されていないため、-staticlib
の影響はありません。
example%CC -lrwtool -library=iostream \
-staticlib=rwtools7 ← 誤り
次のコマンドは、
librwtool
ライブラリを静的にリンクします。
example%CC -library=rwtools7,iostream -staticlib=rwtools7 ←正しい
相互の関連性
-staticlib
オプションは、-library
オプションで明示的に選択された C++ ライブラリ、または、デフォルトで暗黙的に選択された C++ ライブラリだけに機能します。互換モードでは (-compat=[4]
)、libC
がデフォルトで選択されます。標準モードでは (デフォルトのモード)、Cstd
とCrun
がデフォルトで選択されます。
-xarch=v9
、-xarch=v9a
、-xarch=v9b
のいずれかを使用する場合、静的ライブラリとしては使用できない C++ ライブラリがあります。警告
ライブラリで使用できる値は安定したものではないため、リリースによって変わることがあります。
関連項目
-library
、「標準ライブラリの静的リンク」
-temp
=dirコンパイル中に生成される一時ファイルを格納するディレクトリを dir に指定します。
関連項目
-template
=w[,...w]さまざまなテンプレートオプションを実行可能または実行不能にします。
値
デフォルト
-template
オプションを指定しないと、-template=no%wholeclass,extdef
が使用されます。
-time
-U
nameこのオプションは、コマンド行に指定された (
CC
ドライバによって暗黙的に挿入されるものも含む)-D
オプションによって作成されるマクロシンボル name の初期定義を削除します。他の定義済みマクロや、ソースファイル内のマクロ定義が影響を受けることはありません。相互の関連性
すべての
-U
オプションは、(存在する場合は) すべての-D
オプションの後で処理されます。
-unroll
=n
-V
-v
-vdelx
delete[]
を使用する式に対し、実行時ライブラリ関数_vector_delete_
の呼び出しを生成する代わりに_vector_deletex_
の呼び出しを生成します。関数_vector_delete_
は、削除するポインタおよび各配列要素のサイズという 2 つの引数をとります。関数
_vector_deletex_
は_vector_delete_
と同じように動作しますが、3 つめの引数としてそのクラスのデストラクタのアドレスをとります。この引数はサン以外のベンダーが使用するためのもので、関数では使用しません。デフォルト
コンパイラは、
delete[]
を使用する式に対して_vector_delete_
の呼び出しを生成します。警告
これは旧式フラグであり、将来のリリースでは削除されます。サン以外のベンダーからソフトウェアを購入し、ベンダーがこのフラグの使用を推奨していない限り、このオプションは使用しないでください。
-verbose
=v[,...v]値
v
の値は
複数指定することができます。たとえば、
-verbose=template,diags
とすることができます。
デフォルト
-verbose
を指定しないと、-verbose=%none
が使用されます。
+w
次のような問題のありそうな構造について、追加の警告を生成します。
デフォルト
このオプションを指定しないと、コンパイラは必ず問題となる構造についてのみ警告を出力します。
関連項目
+w2
+w
で発行される警告に加えて、技術的な違反についての警告を発行します。+w2
で行われる警告は、危険性はないが、プログラムの移植性を損なう可能性がある違反に対するものです。警告
+w2
を指定してコンパイルすると、Solaris および C++標準ヘッダーファイルに関する警告が発行されることがあります。関連項目
-w
コンパイラが出す警告を出力しません。ただし、一部の警告、特に旧式の構文に関する重要な警告は抑制できません。
関連項目
-xa
コンパイル時に
TCOVDIR
環境変数を設定すれば、カバレージ (.d
) ファイルを置くディレクトリを指定できます。この変数を設定しなければ、カバレージ (.d
) ファイルは ソースファイルと同じディレクトリにソースファイルとして残ります。このオプションは、古いカバレージファイルとの下位互換を保つためだけに使用してください。
相互の関連性
-xprofile=tcov
オプションと-xa
オプションは、1 つの実行可能ファイルで同時に使用できます。つまり、-xprofile=tcov
でコンパイルされたファイルと-xa
でコンパイルされたファイルからなるプログラムをリンクすることはできますが、両方のオプションを使って 1 つのファイルをコンパイルすることはできません。
-xa
オプションと-g
を一緒に使用することはできません。警告
コンパイルとリンクを別々に行う場合で、
-xa
でコンパイルした場合は、 リンクも-xa
で行わなければなりません。そうしないと予期できない結果になることがあります。関連項目
-xprofile=tcov
、tcov
(1) のマニュアルページ、
『プログラムのパフォーマンス解析』
-xar
テンプレートを使用する C++ のアーカイブをコンパイルするときには通常、テンプレートデータベース中でインスタンス化されたテンプレート関数をそのアーカイブの中にあらかじめ入れておく必要があります。このオプションはそれらのテンプレートを必要に応じてアーカイブに自動的に追加します。
例
次のコマンド行は、ライブラリファイルとオブジェクトファイルに含まれるテンプレート関数をアーカイブします。
example%
CC -xar -o libmain.a a.o b.o c.o
警告
テンプレートデータベースの
.o
ファイルをコマンド行に追加しないでください。アーカイブを構築するときは、
ar
コマンドを使用しないでください。CC -xar
を使用して、テンプレートのインスタンス化情報が自動的にアーカイブに含まれるようにしてください。関連項目
-xarch
=isa対象となる命令セットアーキテクチャ (ISA) を指定します 。
このオプションは、コンパイラが生成するコードを、指定した命令セットアーキテクチャの命令だけに制限します。つまり、指定した命令セットだけを許可します。このオプションを使用すると、ターゲットアーキテクチャに固有の命令が使用できない可能性があります。
値
表 3-29 に、SPARC プラットフォームでの各
-xarch
キーワードの詳細を示します。
- SPARC 命令セットアーキテクチャ V7、V8 および V8a はバイナリ互換です。
v8plus
でコンパイルされたオブジェクトバイナリ (.O
) ファイルとv8plusa
でコンパイルされた.o
ファイルは、SPARCV8plusa
互換のプラットフォーム上でのみリンクおよび同時に実行できます。v8plus
、v8plusa
、およびv8plusb
でそれぞれコンパイルされたオブジェクトバイナリ(.o
)ファイル は、SPARCV8plusb
互換のプラットフォーム上でのみリンクおよび同時に実行できます。-xarch
の値v9
、v9a
およびv9b
は、UltraSPARC 64 ビット Solaris 環境でのみ、指定できます。v9
とv9a
でそれぞれコンパイルされたオブジェクトバイナリ (.o
) ファイルは、SPARCV9a
互換プラットフォーム上でのみリンクおよび同時に実行できます。v9
、v9a
、およびv9b
でそれぞれコンパイルされたオブジェクトバイナリ (.o
) ファイルは、SPARCV9b
互換プラットフォーム上でのみリンクおよび同時に実行できます。いずれの場合でも、初期のアーキテクチャでは、生成された実行可能ファイルの実行速度がかなり遅くなる可能性があります。また、4 倍精度 (
REAL*16
とlong double
) の浮動小数点命令は多くの命令セットアーキテクチャで使用できますが、この命令はコンパイラが使用するコードには含まれません。表 3-30 に、IA プラットフォームでの
-xarch
キーワードの詳細を示します。
デフォルト
-xarch=
isa を指定しないと、-xarc=generic
が使用されます。相互の関連性
このオプションは単体でも使用できますが、
-xtarget
オプションの展開の一部でもあります。したがって、特定の-xtarget
オプションによって設定された-xarch
の値を変更するためにも使用できます。たとえば、-xtarget=ultra2
は-xarch=v8 -xchip=ultra2 -xcache=15/32/1:512/64/1
に展開されます。次のコマンドでは、-xarch=v8plusb
は、-xtarget=ultra2
の展開で設定された-xarch=v8
より優先されます。
example%CC -xtarget=ultra2 -xarch=v8plusb foo.cc
compat[=4]
とともに-xarch=v9
、-xarch=v9a
、-xarch=v9b
のいずれかを使用することはできません。警告
このオプションを最適化の指定と一緒に使用する場合、適切な選択をすれば、指定したアーキテクチャで実行可能ファイルの良好なパフォーマンスが得られます。ただし、適切な選択をしなかった場合、パフォーマンスが著しく低下するか、あるいは、作成されたバイナリプログラムが目的のターゲットプラットフォーム上で実行できない可能性があります。
-xcache
=c(SPARC) オプティマイザで使用するキャッシュ属性を定義します。
オプティマイザが使用できるキャッシュの属性を定義します。この定義によって、特定のキャッシュが使用されるわけではありません。
注 - このオプションは単独でも使用できますが、-xtarget
オプションが展開されたものの一部です。このオプションの主な目的は、-xtarget
オプションにより指定される値を変更することです。
generic
ほとんどの SPARC プロセッサで良好なパフォーマンスが得られるキャッシュ属性を定義します。 s1/l1/a1 レベル 1 のキャッシュ属性を定義します。 s1/l1/a1:s2/l2/a2 レベル 1 とレベル 2 のキャッシュ属性を定義します。 s1/l1/a1:s2/l2/a2:s3/l3/a3 レベル 1、レベル 2、レベル 3 のキャッシュ属性を定義します。
si
レベル i のデータキャッシュのサイズ (K バイト) li
レベル i のデータキャッシュのラインサイズ (バイト) ai
レベル i のデータキャッシュの結合規則
たとえば、i=1 は、レベル 1 のキャッシュ属性の s1
/
l1/
a1 を意味します。デフォルト
-xcache
を指定しないと、-xcache=generic
がデフォルトで使用されます。この値を指定すると、ほとんどの SPARC プロセッサで良好なパフォーマンスが得られ、どのプロセッサでも顕著なパフォーマンスの低下がないキャッシュ属性がコンパイラで使用されます。例
-xcache=16/32/4:1024/32/1
の設定内容は、次のとおりです。
16K バイト
ラインサイズ 32 バイト
4 ウェイアソシアティブ
1024K バイト
ラインサイズ 32 バイト
ダイレクトマッピング
関連項目
-xcg89
警告
コンパイルとリンクを別々に実行する場合で、コンパイルで
-xcg89
を使用した場合は、リンクでも同じオプションを使用してください。そうしないと、予期しない結果が発生する可能性があります。
-xcg92
警告
コンパイルとリンクを別々に実行する場合で、コンパイルで
-xcg92
を使用した場合は、リンクでも同じオプションを使用してください。そうしないと、予期しない結果が発生する可能性があります。
-xchip
=cオプティマイザが使用するターゲットとなるプロセッサを指定します。
ターゲットとなるプロセッサを指定することによって、タイミング属性を指定します。
- 命令の順番 (スケジューリング)
- コンパイラが分岐を使用する方法
- 意味が同じもので代用できる場合に使用する命令
注 - このオプションは単独でも使用できますが、-xtarget
オプションが展開されたものの一部です。このオプションの主な目的は、-xtarget
オプションにより指定される値を変更することです。
値
デフォルト
ほとんどの SPARC プロセッサでは、デフォルト値の
generic
を使用すれば、どのプロセッサでもパフォーマンスの著しい低下がなく、良好なパフォーマンスが得られる最良のタイミング属性がコンパイラで使用されます。
-xcode
=a値
デフォルト
SPARC V8 と V7 の場合は
-xcode=abs32
です。SPARC と UltraSPARC (
-xarc=(v9|v9a|v9b)
のとき) の場合は-xcode=abs64
です。
-xcrossfile[=
n]
(SPARC) 複数のソースファイルに渡る最適化とインライン化を可能にします。
値
0
複数のソースファイルに渡る最適化とインライン化を実行しません。 1
複数のソースファイルに渡る最適化とインライン化を実行します。
通常、コンパイラの解析の範囲は、コマンド行で指定した個々のファイルごとに行われます。たとえば、
-xO4
オプションを指定した場合、自動インライン化は同じソースファイル内で定義および参照されているサブプログラムにのみ行われます。
-xcrossfile
または-xcrossfile=1
を指定すると、コンパイラはコマンド行で指定されたすべてのファイルを一括して分析し、それらが単一のソースファイルであるかのように扱います。デフォルト
-xcrossfile
を指定しない場合、-xcrossfile=0
が仮定され、複数のソースファイルに渡る最適化とインライン化は行われません。
-xcrossfile
は-xcrossfile=1
と同じです。相互の関連性
-xcrossfile
オプションは、-xO4
または-xO5
と一緒に使用した場合にのみ効果が得られます。警告
このオプションを使ってコンパイルされたファイルは、インライン化されたコードを含む可能性があるため、相互に依存しています。したがって、プログラムにリンクするときは、1 つの単位として使用しなければなりません。あるルーチンを変更したために、関連するファイルを再コンパイルした場合は、すべてのファイルを再コンパイルする必要があります。結果として、このオプションを使用すると、
makefile
の構成に影響を与えます。
-xF
この
-xF
オプションを指定してコンパイルした後で実行してアナライザを使用すると、最適化された関数の順序を示すマップファイルを作成できます。続いて実行するリンカーには、-M
mapfile (マップファイル) オプションでそのマップを使用するよう指示して、実行可能ファイルを作成することができます。これによって、実行可能ファイルの各関数が別々のセクションに置かれます。メモリー上でサブプログラムの順序を並べ替えることで効果が上がるのは、アプリケーション時間の多くの割合がアプリケーションテキストのページフォルト時間に費やされている場合だけです。それ以外の場合は、順序を変えてもアプリケーションの全体的なパフォーマンスが向上しないことがあります。
相互の関連性
-xF
オプションは、-features=no%except
(-noex
) のときにだけ有効です。関連項目
analyzer
(1)、debugger
(1)、およびld
(1) のマニュアルページ
-xhelp=flags
-xhelp=readme
README
ファイルのページングには、環境変数PAGER
で指定されているコマンドが使用されます。PAGER
が設定されていない場合、デフォルトのページングコマンドmore
が使用されます。
-xildoff
デフォルト
-g
オプションを使用していない場合は、この-xildoff
オプションがデフォルトになります。さらに-G
オプションを使用しているか、コマンド行にソースファイルを指定している場合も、このオプションがデフォルトになります。このオプションを無効にするには、-xildon
オプションを使用してください。関連項目
-xildon
、ild
(1) およびld
(1) のマニュアルページ、
『dbx
コマンドによるデバッグ』
-xildon
-G
ではなく-g
を使用し、コマンド行にソースファイルを指定していない場合は、このオプションが有効になります。このオプションを無効にするには、-xildoff
オプションを使用してください。関連項目
-xildoff
と、ild
(1) およびld
(1) のマニュアルページ
『dbx
コマンドによるデバッグ』
-xlibmieee
例外時に
libm
が数学ルーチンに対し IEEE 754 値を返します。関連項目
-xlibmil
選択された
libm
ライブラリルーチンを最適化のためにインライン展開します。
注 - このオプションは C++ インライン関数には影響しません。
一部の
libm
ライブラリルーチンにはインラインテンプレートがあります。このオプションを指定すると、これらのテンプレートが選択され、現在選択されている浮動小数点オプションとプラットフォームに対して最も高速な実行可能コードが生成されます。相互の関連性
このオプションの機能は
-fast
オプションを指定した場合にも含まれます。関連項目
-xlibmopt
パフォーマンスが最適化された数学ルーチンのライブラリを使用し、より高速で実行できるコードを生成します。通常の数学ライブラリを使用した場合とは、結果が少し異なることがあります。このような場合、異なる部分は通常は最後のビットです。
このライブラリオプションをコマンド行に指定する順序は重要ではありません。
相互の関連性
-xlibmopt
オプションの機能は-fast
オプションを指定した場合にも含まれます。関連項目
-xlic_lib=sunperf
(SPARC) Sun Performance LibraryTM とリンクします。
-l
と同様、このオプションは、ソースまたはオブジェクトファイル名に続けて、コマンド行の最後に指定する必要があります。関連項目
README
ファイル『performance_library
』
-xlicinfo
このオプションは、ライセンスサーバー名と、検査済みのライセンスを所持するユーザーのユーザー ID を返します。このオプションを指定するとコンパイラは起動されず、ライセンスも検査されません。
矛盾するオプションを使用すると、コマンド行の最後のものが優先され、警告が出されます。
例
example%CC -c -xlicinfo any.cc
example%CC -xlicinfo -c any.cc
-Xm
-xM
例
#include "foo.h"
foo.c
を-xM
でコンパイルすると、次の行が出力に含まれます。
foo.o:foo.h関連項目
メークファイルおよび依存関係についての詳細は、
make
(1) のマニュアルページを参照してください。
-xM1
依存情報を生成しますが、
/usr/include
は除きます。
/usr/include
ヘッダーファイルについての依存情報を出力しない点以外は、-xM
オプションと同じ機能です。
-xMerge
(SPARC) データセグメントをテキストセグメントと併合 (マージ) します。
オブジェクトファイルのデータは読み取り専用です。また、このデータは
ld -N
を指定してリンクしない限りプロセス間で共有されます。関連項目
-xnolib
通常 (このオプションを指定しない場合)、C++ コンパイラは、C++ プログラムをサポートするためにいくつかのシステムライブラリとリンクします。このオプションを指定すると、デフォルトのシステムサポートライブラリとリンクするための
-l
lib オプションがld
に渡されません。通常、コンパイラは、システムサポートライブラリにこの順序でリンクします。
-l
オプションの順序は重要です。-lm
、-lw
、-lcx
オプションは-lc
より前になければなりません。
注 --mt
コンパイラオプションを指定した場合、コンパイラは通常-lm
でリンクする直前に-lthread
でリンクします。
デフォルトでどのシステムサポートライブラリがリンクされるかを知りたい場合は、コンパイルで
-dryrum
オプションを指定します。たとえば、次のコマンドを実行するとします 。
example%
CC foo.cc -xarch=v9 -dryrun
-lCstd -lCrun -lm -lw -lc
-xarch=v9
を指定したときは、-lcs
がリンクされないことに注意してください。例
C アプリケーションのバイナリインタフェースを満たす最小限のコンパイルを行う場合、つまり、C サポートだけが必要な C++ プログラムの場合は、次のように指定します。
example%
CC -xnolib test.cc -lc
一般的なアーキテクチャ命令を持つシングルスレッドアプリケーションに
libm
を静的にリンクするには、次のように指定します。
example%
CC -xnolib test.cc -lCstd -lCrun \
-Bstatic -lm -Bdynamic -lw -lcx -lc
example%
CC -compat -xnolib test.cc -lC \
-Bstatic -lm -Bdynamic -lw -lcx -lc相互の関連性
-xarch=v9
、-xarch=v9a
、-xarch=v9b
のいずれかでリンクする場合には、使用できない静的システムライブラリがあります (libm.a
やlibc.a
など)。
-xnolib
を指定する場合は、必要なすべてのシステムサポートライブラリを手動で一定の順序にリンクする必要があります。システムサポートライブラリは最後にリンクしなければなりません。
-xnolib
を指定すると、-library
は無視されます。警告
C++ 言語の多くの機能では、
libC
(互換モード) またはlibCrun
(標準モード) を使用する必要があります。このリリースのシステムサポートライブラリは安定していないため、リリースごとに変更される可能性があります。
関連項目
-xnolibmil
最適化された数学ライブラリとのリンクを変更するには、このオプションを
-fast
と一緒に使用してください。
-xnolibmopt
例
次の例のように、このオプションはコマンド行で
-fast
オプションを指定した場合は、その後に使用してください。
example%
CC -fast -xnolibmopt
-xO
level最適化レベルを指定します。一般的に、プログラムの実行速度は最適化のレベルに依存します。最適化レベルが高いほど、実行速度が速くなります。
-xO
level を指定しないと、非常に基本的なレベルの最適化しか行われません。つまり、最適化は、式の局所的な共通部分を削除することと、デッドコードを分析することに限定されます。最適化レベルを指定してコンパイルすると、プログラムのパフォーマンスが著しく向上することがあります。ほとんどのプログラムの場合、-xO2
(または同等のオプション-O
および-O2
) を使用することをお勧めします。一般に、プログラムをより高い最適化レベルでコンパイルすれば、実行時のパフォーマンスはそれだけ向上します。しかし、最適化レベルが高ければ、それだけコンパイル時間が増え、実行可能ファイルが大きくなる可能性があります。
ごくまれに、
-x02
の方が他の値より実行速度が速くなることがあり、-x03
の方が-x04
より速くなることがあります。すべてのレベルでコンパイルを行なってみて、こうしたことが発生するかどうか試してみてください。メモリー不足になった場合、オプティマイザは最適化レベルを落として現在の手続きをやり直すことによってメモリー不足を回復しようとします。ただし、以降の手続きについては、
-xO
level オプションで指定された最適化レベルを使用します。
-xO
には 5 つのレベルがあります。以降では各レベルが SPARC および IA プラットフォームでどのように動作するかを説明します。値
-xO1
では、最小限の最適化 (ピープホール) が行われます。これはコンパイルの後処理におけるアセンブリレベルでの最適化です。-xO2
や-xO3
を使用するとコンパイル時間が著しく増加する場合や、スワップ領域が不足する場合だけ-xO1
を使用してください。-xO2
では、次の基本的な局所的および大域的な最適化が行われます。このレベルでは、外部変数や間接変数の参照や定義は最適化されません。一般に、このレベルを使用するとコードサイズが最小になります。
注 --O
は-xO2
を指定することと同じです。
-xO3
では、-xO2
レベルで行う最適化に加えて、外部変数に対する参照と定義も最適化されます。このレベルでは、ポインタ代入の影響は追跡されません。volatile
で適切に保護されていないデバイスドライバをコンパイルする場合か、シグナルハンドラの中から外部変数を修正するプログラムをコンパイルする場合は、-xO2
を使用してください。一般に-xO3
を使用すると、コードサイズが大きくなります。スワップ領域が不足する場合は、-xO2
を使用してください。-xO4
では、-xO3
レベルで行う最適化レベルに加えて、同じファイルに含まれる関数のインライン展開も自動的に行われます。インライン展開を自動的に行なった場合、通常は実行速度が速くなりますが、遅くなることもあります。一般に、このレベルを使用するとコードサイズが大きくなります。-xO5
では、最高レベルで最適化が行われます。これを使用するのは、コンピュータの最も多くの時間を小さなプログラムが使用している場合だけにしてください。このレベルで使用される最適化アルゴリズムでは、コンパイル時間が増えたり、実行時間が改善されないことがあります。このレベルの最適化によってパフォーマンスが改善される確率を高くするには、プロファイルのフィードバックを使用します。「-xprofile=p」 を参照してください。
-xO1
では、引数がメモリーから事前にロードされます。その結果、デフォルトの最適化の第 1 段階で行われる単純な最適化に加え、クロスジャンプ (末尾のマージ) も行われます。-xO2
では、レベル 1 で行われる最適化に加えて、高レベルと低レベルの命令のスケジューリング、スピル解析、ループメモリー参照の削除、レジスタ寿命解析、レジスタ割り当ての強化、大域的な共通部分式の削除が行われます。-xO3
では、レベル 2 で行われる最適化に加えて、ループ力の縮小とインライン展開が行われます。-xO4
では、レベル 3 で行われる最適化に加えて、アーキテクチャ固有の最適化が行われます。-xO5
では、最高レベルの最適化が行われます。このレベルで使用される最適化アルゴリズムでは、コンパイル時間が増えたり、実行時間が改善されないことがあります。相互の関連性
-g
または-g0
を使用するとき、最適化レベルが-xO3
以下の場合、最大限のシンボリック情報とほぼ最高の最適化が得られます。末尾呼び出しの最適化とバックエンドのインライン化は無効です。
-g
または-g0
を使用するとき、最適化レベルが-xO4
以上の場合、最大限のシンボリック情報と最高の最適化が得られます。
-g
を指定してデバッグを行なっても-xO
level には影響はありません。しかし、-xO
level によって-g
がある程度の制限を受けます。たとえば、-xO
level オプションを使用すると、dbx
から渡された変数を表示できないなど、デバッグの機能が一部制限されます。しかし、dbx where
コマンドを使用して、シンボリックトレースバックを表示することは可能です。詳細は、『dbx コマンドによるデバッグ』を参照してください。
-xcrossfile
オプションは、-xO4
または-xO5
と一緒に使用した場合にのみ効果があります。警告
大規模な手続き (数千行のコードからなる手続き) に対して
-xO3
または-xO4
を指定して最適化をすると、途方もない大きさのメモリーが必要になり、マシンのパフォーマンスが低下することがあります。こうしたパフォーマンスの低下を防ぐには、
limit
コマンドを使用して、1 つのプロセスで使用できる仮想メモリーの大きさを制限します (csh(1)
のマニュアルページを参照)。たとえば、使用できる仮想メモリーを 16M バイトに制限するには、次のコマンドを使用します。
example%
limit datasize 16M
このコマンドにより、データ領域が 16M バイトに達したときに、オプティマイザがメモリー不足を回復しようとします。
マシンが使用できるスワップ領域の合計容量を超える値は、制限値として指定することはできません。制限値は、大規模なコンパイル中でもマシンの通常の使用ができるぐらいの大きさにしてください。
最良のデータサイズ設定値は、要求する最適化のレベルと実メモリーの量、仮想メモリーの量によって異なります。
実際のスワップ空間に関する情報を得るには、
swap -l
と入力します。実際の実メモリーに関する情報を得るには、
dmesg | grep mem
と入力します。関連項目
-fast
、-xcrossfile=
n、-xprofile=
p、csh
(1) のマニュアルページ
-xpg
-xpg
オプションでは、gprof
で自動プロファイル処理するためのデータを収集するコードが生成されます。このオプションを指定すると、プログラムが正常に終了したときにgmon.out
を生成する実行時記録メカニズムが呼び出されます。警告
コンパイルとリンクを別々に行う場合は、
-xpg
でコンパイルしたときは-xpg
でリンクする必要があります。関連項目
-xprofile=
p、analyzer
(1) のマニュアルページ、
『プログラムのパフォーマンス解析』
-xprefetch
[=a[,a]](SPARC) 先読み機能をサポートするアーキテクチャで先読み命令を有効にします。たとえば、UltraSPARC-II (
-xarch=v8plus
、v8plusa
、v8plusb
、v9
、v9a
、v9b
のいずれか) の場合です。
デフォルト
-xprefetch
を指定しないと、-xprefetch=no%auto,explicit
が使用されます。
-xprefetch
だけを指定すると、-xprefetch=auto,explicit
が使用されます。
-xprefetch
だけを指定した場合や引数としてauto
またはyes
を指定した場合以外は、デフォルトでno%auto
が使用されます。たとえば、-xprefetch=explicit
は-xprefetch=explicit,no%auto
と同じことです。
no%explicit
かno
を指定した場合以外は、デフォルトでexplicit
が使用されます。たとえば、-xprefetch=auto
は-xprefetch=auto,explicit
と同じことです。相互の関連性
sun_prefetch.h
ヘッダーファイルには、明示的な先読み命令を指定するためのマクロが含まれています。先読み命令は、実行コード中のマクロの位置にほぼ相当するところに挿入されます。明示的な先読み命令を使用するには、使用するアーキテクチャが適切なもので、
sun_prefetch.h
をインクルードし、かつ、コンパイラコマンドに-xprefetch
が指定されていないか、-xprefetch=explict
か-xprefetch=yes
が指定されていなければなりません。マクロが呼び出され、
sun_prefetch.h
ヘッダーファイルがインクルードされていても、-xprefetch=no%explict
か-xprefetch=no
が指定されていると、明示的な先読み命令は実行コードに組み込まれません。
-xprefetch
、-xprefetch=auto
、-xprefetch=yes
の場合には、コンパイラは生成するコードに先読み命令を自動的に挿入します。これにより、先読みをサポートするアーキテクチャではパフォーマンスが向上する場合があります。警告
明示的な先読み命令の使用は、パフォーマンスが実際に向上する特別な場合に限定してください。
-xprofile
=p実行時プロファイルデータを収集したり、それを使って最適化します。
このオプションを使用すると、実行頻度のデータが集められて、実行時に保存されます。保存されたデータは後続する処理の実行時に使用され、これによってパフォーマンスが向上します。このオプションは、最適化のレベルが指定されている場合にのみ有効です。
値
相互の関連性
-xprofile=tcov
オプションと-xa
オプションは、1 つの実行可能ファイルで同時に使用できます。つまり、-xprofile=tcov
でコンパイルされたファイルと-xa
でコンパイルされたファイルからなるプログラムをリンクすることはできますが、両方のオプションを使って 1 つのファイルをコンパイルすることはできません。
-xO4
を使用したために、関数のインライン化が行われている場合は、-xprofile=tcov
によって生成されたコードカバレージ報告は信用できない可能性があります。警告
コンパイルとリンクを別々に実行する場合で、コンパイルで
-xprofile
オプションを使用した場合は、リンクでも-xprofile
を使用する必要があります。関連項目
-xa
、tcov
(1) のマニュアルページ
『プログラムのパフォーマンス解析』
-xregs
=r[,...r]コンパイラは、一時記憶領域として使用できるレジスタ (一時レジスタ) が多ければ、それだけ高速なコードを生成します。このオプションは、利用できる一時レジスタを増やしますが、必ずしもそれが適切であるとは限りません。
値
r には次の値のいずれかを指定します。各値の意味は
-xarch
の設定によって異なります。
デフォルト
-xregs
を指定しないと、-xregs=appl,float
が使用されます。例
使用可能なすべての一時レジスタを使ってアプリケーションプログラムをコンパイルするには、次のように指定します。
-xregs=appl,float
コンテキストの切り替えの影響を受けやすい非浮動小数点コードをコンパイルするには、次のように指定します。
-xregs=no%appl
,no%float
関連項目
SPARC V7 および V8 の ABI、SPARC V9 の ABI
-xs
オブジェクト (
.o
) ファイルなしにdbx
でデバッグできるようにします。
-xs
オプションは、dbx
の自動読み込みを無効にします。このオプションは、.o
ファイルを残しておくことができない場合に使用してください。このオプションにより、-s
オプションがアセンブラに渡されます。「非自動読み込み」とは、シンボルテーブルの古い読み込み方法です。
dbx
の全シンボルテーブルが実行ファイル内に置かれます。また、リンカーによるリンクやdbx
による初期化の速度が遅くなります。「自動読み込み」は、シンボルテーブルの新しい読み込み方法 (デフォルト) です。各
.o
ファイルに情報が含まれるため、dbx
はシンボルテーブルが必要な場合にのみシンボルテーブル情報を読み込みます。このため、リンカーによるリンクやdbx
による初期化の速度が速くなります。
-xs
を指定する場合で、実行ファイルを別のディレクトリに移動してdbx
を使用するときは、オブジェクト (.o
) ファイルを移動する必要はありません。
-xs
を指定せずに実行ファイルを別のディレクトリに移動してdbx
を使用する場合は、ソースファイルとオブジェクト (.o
) ファイルの両方を移動する必要があります。
-xsafe=mem
このオプションによって、V9 マシン上で投機的なロード命令を使用することができます。
相互の関連性
このオプションは、
-xarch
でv8plus
、v8plusa
、v8plusb
、v9
、v9a
、v9b
のいずれかを指定し、最適化レベルの-x05
と組み合わせた場合にだけ有効です。警告
このオプションは、プログラムでメモリーに関するトラップが起こらないとみなせる場合しか使用しないでください。ほとんどのプログラムの場合、この仮定は適切であり、このように仮定してもかまいません。しかし、メモリーに関するトラップを明示的に強制して例外条件を処理するプログラムの場合は、このように仮定することはできません。
-xsb
このオプションを指定すると、
CC
ドライバが、ソースブラウザのためにSunWS_cache
サブディレクトリにシンボルテーブル情報を追加生成します。関連項目
-xsbfast
このオプションでは、
ccfe
段階だけを実行して、ソースブラウザのためにSunWS_cache
サブディレクトリにシンボルテーブル情報を追加生成します。オブジェクトファイルは生成されません。関連項目
-xspace
(SPARC) コードサイズが大きくなるような最適化は行いません。
-xtarget
=tコンパイラにハードウェアシステムを正確に指定すると、プログラムによってはパフォーマンスが向上します。プログラムのパフォーマンスを重視する場合は、ハードウェアを適切に指定することが極めて重要です。特に、プログラムをより新しい SPARC システム上で実行する場合には重要になります。しかし、ほとんどのプログラムおよび旧式の SPARC システムではパフォーマンスの向上はわずかであるため、汎用的な指定方法で十分です。
値
SPARC プラットフォームでは、t には次のいずれかの値を指定します。
native
ホストシステムで最高のパフォーマンスが得られます。
コンパイラは、ホストシステム用に最適化されたコードを生成し、コンパイラが動作しているマシンで使用できるアーキテクチャ、チップ、キャッシュの属性を決定します。generic
汎用アーキテクチャ、チップ、キャッシュで最高のパフォーマンスが得られます。 コンパイラは、 -xtarget=generic
を-xarch=generic
に展開します。 これはデフォルト値です。
-xchip=generic -xcache=genericplatform-name 指定するシステムで最高のパフォーマンスが得られます。 表 3-6 から SPARC プラットフォームの名前を選択します。
次の表は、
-xtarget
に指定できる SPARC プラットフォームの名前とその展開値を示しています。
native
またはgeneric
386
Intel 80386 マイクロプロセッサで最高のパフォーマンスが得られるコードが生成されます。486
Intel 80486 マイクロプロセッサで最高のパフォーマンスが得られるコードが生成されます。pentium
Pentium または Pentium Pro マイクロプロセッサで最高のパフォーマンスが得られるコードが生成されます。pentium_pro
Pentium Pro マイクロプロセッサで最高のパフォーマンスが得られるコードが生成されます。デフォルト
SPARC でも IA でも、
-xtarget
を指定しないと、-xtarget=generic
が使用されます。展開
-xtarget
オプションは、購入したプラットフォーム上で使用する-xarch
、-xchip
、-xcache
の組み合わせを簡単に指定するためのマクロです。-xtarget
自体の意味は、展開することです。例
-xtarget=sun4/15
は-xarch=v8a -xchip=micro -xcache=2/16/1
を意味します。相互の関連性
-xarch=v9|v9a|v9b
オプションを指定して SPARC V9 アーキテクチャ用にコンパイルする場合、-xtarget=ultra
またはultra2
の指定は必要でないか、十分ではありません。-xtarget
を指定する場合は、-xarch=v9|v9a|v9b
オプションは-xtarget
よりも後になければなりません。たとえば、次のように指定するとします。
-xarch=v9 -xtarget=ultra上記の指定は次のように展開され、
-xarch
の値がv8
に戻ります。
-xarch=v9 -xarch=v8 -xchip=ultra -xcache=16/32/1:512/64/1正しくは、次のように、
-xarch
を-xtarget
よりも後に指定します。
-xtarget=ultra -xarch=v9
-xtime
CC
ドライバが、さまざまなコンパイル過程の実行時間を報告します。
-xunroll
=nこのオプションでは、コンパイラがループを最適化 (展開) するかどうかを指定します。
値
n が 1 より大きな整数の場合は、
-unroll=
n によってコンパイラがループを n 回展開します。
-xvector[=(yes|no)]
(SPARC) SPARC ベクトルライブラリ関数の自動呼び出しを有効にします。
デフォルト
コンパイラのデフォルトは
-xvector=no
です。-xvector
だけを指定した場合、-xvector=yes
が仮定されます。警告
コンパイルとリンクを別々に行う場合は、どちらにも同じ
-xvector
設定を使用する必要があります。
-xwe
ゼロ以外の終了状態を返すことによって、すべての警告をエラーとして扱います。
-z
argリンクエディタのオプション。詳細は、
ld
(1) のマニュアルページと Solaris 関連のマニュアル『リンカーとライブラリ』を参照してください。
-ztext
サン・マイクロシステムズ株式会社 Copyright information. All rights reserved. |
ホーム | 目次 | 前ページへ | 次ページへ | 索引 |