| C++ ユーザーズガイド |
第 3 章
C++ コンパイラオプション
この章では、Solaris 2.6、Solaris 7、および Solaris 8 で動作する
CCコンパイラのコマンド行オプションについて詳しく説明します。ここで説明する機能は、特に断りがない限りすべてのプラットフォームに適用されます。特定のプラットフォームだけに有効な機能は SPARC または IA と明示します。詳細は、「はじめに」の「マルチプラットフォーム対応」を参照してください。
表 3-1 オプションの構文形式の例 -option1-E-optionvalue*-Ipathname-option=value-xunroll=4-optionvalue-ofilename
1 optionはオプション名、value は値、pathname はパス名、filename はファイル名を示します。
各オプションの説明での表記規則は 「書体と記号について」を参照してください。
大括弧、括弧、中括弧、パイプ記号、省略記号は、オプションの説明に使用しているもので、オプションの一部ではありません。
-llib オプションは、ライブラリliblib.a(またはliblib.so) とリンクするときに使用します。ライブラリが正しい順序で検索されるように、-llib オプションは、ソースやオブジェクトのファイル名の後に指定する方が安全です。- 一般にコンパイラオプションは左から右に処理され、マクロオプション (他のオプションを含むオプション) は条件に応じて内容が変更されます (ただし
-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プロファイル処理のためのコードを生成する。 -xagprofプロファイラによるプロファイル処理用にコンパイルする。-xpg実行時プロファイルデータを収集したり、このデータを使って最適化する。 -xprofile=tcov
リファレンスオプション
次のオプションはコンパイラ情報を簡単に参照するためのものです。
表 3-13 リファレンスオプション 以前のコンパイラからの移行に関する情報の参照先を表示する。 -migrationコンパイラオプションの要約を一覧表示する。 -xhelp= flagsREADME ファイルの内容を表示する。 -xhelp= readme
ソースオプション
表 3-14 ソースオプション #includeファイルの検索パスに pathname を追加する。-Ipathnameメークファイル依存情報を出力する。 -xM依存情報を生成するが、 /usr/includeは除く。-xM1
テンプレートオプション
表 3-15 テンプレートオプション テンプレートインスタンスの位置とリンケージを制御する。 -instances=aテンプレートソースの検索ディレクトリを追加指定する。 -ptipathさまざまなテンプレートオプションを有効または無効にする。 -template=w
スレッドオプション
表 3-16 スレッドオプション マルチスレッドコード用のコンパイルとリンクを行う。 -mt (SPARC) メモリーに関するトラップを起こさないものとする。 -xsafe=mem
オプション情報の構成
簡単に情報を検索できるように、次の見出しに分けてコンパイラオプションを説明しています。オプションが他のオプションで置き換えられたり、他のオプションと同じである場合、詳細については他のオプション説明を参照してください。
オプションの一覧
-386(IA)
-xtarget=386と同じです。このオプションは、下位互換のためだけに用意されています。
-486(IA)
-xtarget=486と同じです。このオプションは、下位互換のためだけに用意されています。
-a
-Bbindingライブラリのリンク形式を、シンボリックか、動的 (共有ライブラリ) にするか、静的 (共有でないライブラリ) のいずれかからを指定します。
-Bオプションを使用すれば、同じコマンド行で指定を何回も切り替えることができます。このオプションはリンカー (ld) に渡されます。
注 - Solaris 7 および Solaris 8 プラットフォームでは、必ずしもすべてのライブラリが静的ライブラリとして使用できるわけではありません。
値
(
-Bと binding との間に空白があってはなりません。)デフォルト
相互の関連性
C++ のデフォルトのライブラリを静的にリンクするには、
-staticlibオプションを使用します。
-Bstaticおよび-Bdynamicオプションは、デフォルトで使用されるライブラリのリンクにも影響します。デフォルトのライブラリを動的にリンクするには、最後に指定する-Bが-Bdynamicでなければなりません。例
次の例では、
libfoo.soがあってもlibfoo.aがリンクされます。他のすべてのライブラリは動的にリンクされます。
example%CC a.o -Bstatic -lfoo -Bdynamic警告
コンパイルとリンクを別々に行う場合で。コンパイル時に
-Bbinding オプションを使用した場合は、このオプションをリンク時にも指定する必要があります。共有ライブラリを互換モード (
-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を指定すると、このオプションが自動的に有効になります。関連項目
-Dname[=def]プリプロセッサに対してマクロシンボル名 name を def と定義します。
このオプションは、ソースファイルの先頭に
#define指令を記述するのと同じです。-Dオプションは複数指定できます。値
次の表は、事前に定義されているマクロを示しています。これらの値は、
#ifdefのようなプリプロセッサに対する条件式の中で使用できます。
表 3-18 SPARC と IA 用の事前定義シンボル __ARRAYNEW「配列」形式の operatornewとoperatordeleteを有効にしてコンパイルした場合に使用される。
詳細は-features=[no%]arraynewを参照__BOOLブール型を有効にした場合に使用される。詳細は -features=[no%]boolを参照__BUILTIN_VA_ARG_INCRvarargs.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 用の事前定義シンボル __sparc32 ビットコンパイルモードのみ sparc「相互の関連性」を参照。
表 3-21 SPARC v9 用の事前定義シンボル __sparcv964 ビットコンパイルモードのみ
表 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.ccIEEE 標準の浮動小数点演算を使用しているプログラムには、
-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) 制御ワードの丸め精度モードのビットが設定されます。これらのビットは、基本演算 (加算、減算、乗算、除算、平方根) の結果をどの精度に丸めるかを制御します。値
singleIEEE 単精度値に丸めます。 doubleIEEE 倍精度値に丸めます。 extended利用可能な最大の精度に丸めます。
p が
singleかdoubleであれば、丸め精度モードは、プログラムの実行が始まるときに、それぞれsingleかdouble精度に設定されます。p がextendedであるか、-fprecisionフラグが使用されていなければ、丸め精度モードはextended精度のままです。
single精度の丸めモードでは、結果が 24 ビットの有効桁に丸められます。double精度の丸めモードでは、結果が 53 ビットの有効桁に丸められます。デフォルトのextended精度の丸めモードでは、結果が 64 ビットの有効桁に丸められます。このモードは、レジスタにある結果をどの精度に丸めるかを制御するだけであり、レジスタの値には影響を与えません。レジスタにあるすべての結果は、拡張倍精度形式の全範囲を使って丸められます。ただし、メモリーに格納される結果は、指定した形式の範囲と精度に合わせて丸められます。
float型の公称精度はsingleです。longdouble型の公称精度は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コンパイラとリンカーに、デバッガでデバッグ可能なファイルとプログラムを用意するように指示します。
- オブジェクトファイルと実行可能ファイルのシンボルテーブル内に、詳細情報 (スタブ) を生成する。
- 「支援関数」を生成する。デバッガはこれを呼び出して、デバッガの機能のいくつかを実現する。
- 関数のインライン生成を無効にする。
- 特定のレベルの最適化を無効にする。
相互の関連性
このオプションと
-xOlevel を一緒に使用した場合、デバッグ情報が限定されます。詳細は、「-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
-hname生成する動的共有ライブラリに名前 name を割り当てます。これはローダー用のオプションで、
ldに渡されます。通常、-hの後に指定する name (名前) は、-oの後に指定する名前と同じでなければなりません。-hと name の間には、空白文字を入れても入れなくてもかまいません。コンパイル時のローダーは、指定された名前を作成中の動的共有ライブラリに割り当て、そのライブラリのイントリンシック名 (固有名) としてライブラリの中に記録します。
-hname (名前) オプションを指定しないと、イントリンシック名はライブラリファイルに記録されません。実行可能ファイルはすべて、必要な共有ライブラリファイルのリストを持っています。実行時のリンカーは、ライブラリを実行可能ファイルにリンクするとき、ライブラリのイントリンシック名をこの共有ライブラリファイルのリストの中にコピーします。共有ライブラリにイントリンシック名がないと、リンカーは代わりにその共有ライブラリファイルのパス名を使用します。
例
example%CC -G -o libx.so.1 -h libx.so.1 a.o b.o c.o
-iリンカー
ldはLD_LIBRARY_PATHの設定を無視します。
-Ipathname
#includeファイル検索パスに pathname を追加します。このオプションは、インクルードファイルの相対ファイル名 (スラッシュ以外の文字で始まるファイル名) リストに、pathname (パス名) を追加します。
プリプロセッサは、インクルードファイルを次の順序で検索します。
#include"foo.h"の形式のインクルードファイル (" "で囲まれたもの) については、そのソースファイルを含むディレクトリ内を検索する- <
foo.h> の形式のインクルードファイル (< > で囲まれたもの) については、そのソースファイルを含むディレクトリは検索しない-Iオプションで指定された名前を持つディレクトリ (もしあれば)- コンパイラ付属の C++ ヘッダーファイル、ANSI C ヘッダーファイル、および特別な目的のファイルが格納されているディレクトリ
/usr/includeディレクトリ
注 - 標準ヘッダーの処理は上記とは異なります。詳細は、「標準ヘッダーの実装」を参照してください。
相互の関連性
-ptipath (パス) を使用しない場合、コンパイラは-Ipathname (パス) 内のテンプレートファイルを検索します。-ptipath の代わりに-Ipathname を使用してください。
-instances=a値
デフォルト
-instancesを指定しないと、-instances=externが使用されます。関連項目
-keeptmpコンパイル中に作成されたすべての一時ファイルを残しておきます。
このオプションを
-verbose=diagsと一緒に使用すると、デバックに便利です。関連項目
-KPIC
-Kpicこのオプションは、共有ライブラリを構築するためにソースファイルをコンパイルするときに使用します。大域データへの各参照は、大域オフセットテーブルにおけるポインタの間接参照として生成されます。各関数呼び出しは、手続きリンケージテーブルを通して PC 相対アドレス指定モードで生成されます。
-Ldirライブラリを検索するディレクトリに、dir (ディレクトリ) を追加します。
このオプションは
ldに渡されます。コンパイラが提供するディレクトリよりも dir が先に検索されます。
-llibライブラリ
liblib.aまたはliblib.soをリンカーの検索ライブラリに追加します。このオプションは
ldに渡されます。通常のライブラリは、名前がliblib.aかliblib.soの形式です (libと.aまたは.soの部分は必須です)。このオプションでは lib の部分を指定できます。コマンド行には、ライブラリをいくつでも指定できます。指定したライブラリは、-Ldir で指定された順に検索されます。相互の関連性
正しい順序でライブラリが検索されるようにするには、安全のため、必ずソースとオブジェクトの後に
-lx を使用してください。警告
libthreadとリンクする場合は、ライブラリを正しい順序でリンクするために-lthreadではなく-mtを使用してください。POSIX スレッドを使用する場合は、
-mtオプションと-lpthreadオプションを使ってリンクする必要があります。-mtオプションが必要な理由は、libCrun(標準モード) とlibC(互換モード) がマルチスレッド対応アプリケーションに対してlibthreadを必要とするためです。関連項目
-Ldir、-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.ccexample%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
-Olevel
-ofilename出力ファイルまたは実行可能ファイルの名前を 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
-ptipathこのオプションは
-Ipathname (パス名) によって設定された通常の検索パスに代わるものです。-ptipath (パス) フラグを使用した場合、コンパイラはこのパス上にあるテンプレート定義ファイルを検索し、-Ipathname フラグを無視します。
-ptipath よりも-Ipathname を使用すると混乱が起きにくくなります。関連項目
-pto
-ptrこのオプションは廃止されたため、コンパイル時には無視されます。
警告
-ptrオプションは存在しても無視されますが、すべてのコンパイルコマンドから削除するようにしてください。これは将来のリリースで、-ptrが以前とは異なる動作のオプションとして再実装される可能性があるためです。関連項目
レポジトリのディレクトリについては、「テンプレートレポジトリ」を参照してください。
-ptv
-Qoptionphase option[,...option]option (オプション) を phase (コンパイル段階) に渡します。
値
ccfeccfeiroptcg386cgcodegencclinkcclinkldld
例
次に示すコマンド行では、
ldがCCドライバによって起動されたとき、-Qoptionで指定されたオプションの-iと-mがldに渡されます。
example%CC -Qoption ld -i,-m test.c警告
意図しない結果にならないように注意してください。たとえば、
ccfeに-features=bool,castopを渡そうと次のように指示するとします。
-Qoptionccfe -features=bool,castopしかしこの指定は、意図に反して次のように解釈されてしまいます。
-Qoptionccfe -features=bool -Qoption ccfe castop
-Qoptionccfe -features=bool,-features=castop
-qoptionphase option
-qp
-Qproducesourcetype
CCドライバに sourcetype (ソースタイプ) 型のソースコードを生成するよう指示します。sourcetype に指定する接尾辞の定義は次のとおりです。
.iccfeが作成する前処理済みのC++のソースコード.oコードジェネレータ cgが作成するオブジェクトファイル.scgが作成するアセンブラソース
-qproducesourcetype
-Rpathname[:...pathname]複数のパス名も指定できます (例:
-R/path1:/path2)。デフォルト
-Rオプションを指定しないと、出力オブジェクトに記録され、実行時リンカーに渡されるライブラリ検索パスは、-xarchオプションで指定されたターゲットアーキテクチャ命令によって異なります (-xarcを指定しないと、-xarch=genericが使用されます)。
v9、v9a、v9binstall_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
-Unameこのオプションは、コマンド行に指定された (
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オプションを指定してコンパイルした後で実行してアナライザを使用すると、最適化された関数の順序を示すマップファイルを作成できます。続いて実行するリンカーには、-Mmapfile (マップファイル) オプションでそのマップを使用するよう指示して、実行可能ファイルを作成することができます。これによって、実行可能ファイルの各関数が別々のセクションに置かれます。メモリー上でサブプログラムの順序を並べ替えることで効果が上がるのは、アプリケーション時間の多くの割合がアプリケーションテキストのページフォルト時間に費やされている場合だけです。それ以外の場合は、順序を変えてもアプリケーションの全体的なパフォーマンスが向上しないことがあります。
相互の関連性
-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++ プログラムをサポートするためにいくつかのシステムライブラリとリンクします。このオプションを指定すると、デフォルトのシステムサポートライブラリとリンクするための
-llib オプションが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
-xOlevel最適化レベルを指定します。一般的に、プログラムの実行速度は最適化のレベルに依存します。最適化レベルが高いほど、実行速度が速くなります。
-xOlevel を指定しないと、非常に基本的なレベルの最適化しか行われません。つまり、最適化は、式の局所的な共通部分を削除することと、デッドコードを分析することに限定されます。最適化レベルを指定してコンパイルすると、プログラムのパフォーマンスが著しく向上することがあります。ほとんどのプログラムの場合、-xO2(または同等のオプション-Oおよび-O2) を使用することをお勧めします。一般に、プログラムをより高い最適化レベルでコンパイルすれば、実行時のパフォーマンスはそれだけ向上します。しかし、最適化レベルが高ければ、それだけコンパイル時間が増え、実行可能ファイルが大きくなる可能性があります。
ごくまれに、
-x02の方が他の値より実行速度が速くなることがあり、-x03の方が-x04より速くなることがあります。すべてのレベルでコンパイルを行なってみて、こうしたことが発生するかどうか試してみてください。メモリー不足になった場合、オプティマイザは最適化レベルを落として現在の手続きをやり直すことによってメモリー不足を回復しようとします。ただし、以降の手続きについては、
-xOlevel オプションで指定された最適化レベルを使用します。
-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を指定してデバッグを行なっても-xOlevel には影響はありません。しかし、-xOlevel によって-gがある程度の制限を受けます。たとえば、-xOlevel オプションを使用すると、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またはgeneric386
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ゼロ以外の終了状態を返すことによって、すべての警告をエラーとして扱います。
-zargリンクエディタのオプション。詳細は、
ld(1) のマニュアルページと Solaris 関連のマニュアル『リンカーとライブラリ』を参照してください。
-ztext
|
サン・マイクロシステムズ株式会社 Copyright information. All rights reserved. |
ホーム | 目次 | 前ページへ | 次ページへ | 索引 |