Oracle® Solaris Studio 12.4: C ユーザーガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

機能別コンパイラオプション

この付録では、機能別に C コンパイラのオプションをまとめています。各オプションおよびコンパイラコマンド行構文の詳細は、Table A–14 を参照してください。

A.1 機能別に見たオプションの要約

このセクションには、参照しやすいように、コンパイラオプションが機能別に分類されています。各オプションの詳細は、Appendix B, C コンパイラオプションリファレンスを参照してください。フラグによっては、複数の使用目的があるため、複数の個所に記載されているものがあります。

特に明記しないかぎり、オプションはすべてのプラットフォームに適用されます。SPARC ベースシステムに固有の機能は (SPARC) として識別し、x86/x64 ベースシステムに固有の機能は (x86) として識別しています。Oracle Solaris プラットフォームのみに適用されるオプションには、(Solaris) というマークが付きます。Linux プラットフォームのみを対象とするオプションには、(Linux) というマークが付きます。

A.1.1 最適化とパフォーマンスのオプション

表 A-1  最適化とパフォーマンスのオプション
オプション
アクション
-fast
実行可能コードの速度を向上させるコンパイルオプションの組み合わせを選択します。
-fma
浮動小数点の積和演算命令の自動生成を有効にします。
-library=sunperf
Sun Performance Library とリンクします。
-p
プロファイリング用のデータを収集するためにオブジェクトコードを準備します。
-xalias_level
コンパイラで、型に基づく別名の解析および最適化を実行するように指定します。
-xannotate
(Oracle Solaris) 最適化および可観測性ツール binopt(1)code-analyzer(1)discover(1)collect(1)、および uncover(1) で使用可能なバイナリを作成するよう、コンパイラに指示します。
-xbinopt
あとで最適化、変換、分析を行うために、バイナリを準備します。
-xbuiltin
標準ライブラリ関数を呼び出すコードをさらに最適化します。
-xdepend
ループの繰り返し内部でのデータ依存性の解析およびループ再構成を実行します。
-xF
リンカーによるデータおよび関数の順序変更を有効にします。
-xglobalize
ファイルの静的変数のグローバル化を制御します (関数は制御しません)。
-xhwcprof
(SPARC) コンパイラのハードウェアカウンタによるプロファイリングのサポートを有効にします。
-xinline
指定された関数のみのインライン化を試みます。
-xinline_param
コンパイラが関数呼び出しをインライン化するタイミングを判断するために使用するヒューリスティックを手動で変更します。
-xinline_report
コンパイラによる関数のインライン化に関する報告を生成し、標準出力に書き込みます。
-xinstrument
スレッドアナライザで分析するために、プログラムをコンパイルして計測します。
-xipo
内部手続き解析パスを呼び出すことにより、プログラム全体の最適化を実行します。
-xipo_archive
クロスファイル最適化でアーカイブ (.a) ライブラリを取り込むことを許可します。
-xipo_build
コンパイラへの最初の受け渡し時には最適化を行わず、リンク時にのみ最適化を行うことによって、コンパイルの時間を短縮します。
-xkeepframe
指定した関数のスタック関連の最適化を禁止します。
-xjobs
コンパイラが作成するプロセスの数を設定します。
-xlibmil
実行速度を上げるために一部のライブラリルーチンをインライン化します。
-xlic_lib=sunperf
廃止。Sun Performance Library にリンクするには、—library=sunperf を使用します。
-xlinkopt
再配置可能なオブジェクトファイルのリンク時の最適化を実行します。
-xlibmopt
最適化された数学ルーチンのライブラリを有効にします。
-xmaxopt
pragma opt のレベルを指定されたレベルに制限します。
-xnolibmil
数学ライブラリルーチンをインライン化しません。
-xnolibmopt
最適化された数学ルーチンのライブラリを有効にしません。
-xO
オブジェクトコードを最適化します。
-xnorunpath
実行可能ファイル内の共有ライブラリの実行時検索パスのインクルードを抑止します。
-xpagesize
スタックとヒープの優先ページサイズを設定します。
-xpagesize_stack
スタックの優先ページサイズを設定します。
-xpagesize_heap
ヒープの優先ページサイズを設定します。
-xpch
共通の一連のインクルードファイル群を共有するソースファイルを持つアプリケーションのコンパイル時間を短縮します。
–xpec
追加のチューニングやトラブルシューティングで使用できる移植可能な実行可能コード (Portable Executable Code、PEC) バイナリを生成します。
-xpchstop
活性文字列の最後のインクルードファイルを指定するために、-xpch と組み合わせて使用できます。
-xprefetch
先読み命令を有効にします。
-xprefetch_level
-xprefetch=auto を設定したときの先読み命令の自動挿入を制御します。
-xprefetch_auto_type
間接先読みの生成方法を制御します。
-xprofile
プロファイルのデータを収集、または最適化のためにプロファイルを使用します。
-xprofile_ircache
-xprofile=collect 段階から保存されたコンパイルデータを再利用することで、-xprofile=use 段階のコンパイル時間を改善します。
-xprofile_pathmap
1 つのプロファイルディレクトリ内で複数のプログラムや共有ライブラリをサポートします。
-xrestrict
ポインタ値の関数パラメータを制限付きのポインタとして扱います。
-xsafe
(SPARC) コンパイラがメモリーベースのトラップが起こらないと仮定するのを許可します。
-xspace
コードサイズを増やすループの最適化または並列化を行いません。
- xthroughput
システム上で多数のプロセスが同時に実行されている状況でアプリケーションが実行されることを指定します。
-xunroll
ループを n 回展開するようにオプティマイザに示唆します。

A.1.2 コンパイル時とリンク時のオプション

次の表は、リンク時とコンパイル時の両方に指定する必要があるオプションをまとめています。

表 A-2  コンパイル時とリンク時のオプション
オプション
アクション
-fast
実行可能コードの速度を向上させるコンパイルオプションの組み合わせを選択します。
-fopenmp
-xopenmp=parallel と同義です。
-m32 | -m64
コンパイルされたバイナリオブジェクトのメモリーモデルを指定します。
-mt
-D_REENTRANT -lthread に展開されるマクロオプションです。
-p
prof(1) を使用してプロファイル用のデータを収集するように、オブジェクトコードを準備します。
-xarch
命令セットアーキテクチャーを指定します。
-xautopar
複数プロセッサのための自動並列化を有効にします。
-xhwcprof
(SPARC) コンパイラのハードウェアカウンタによるプロファイリングのサポートを有効にします。
-xipo
内部手続き解析パスを呼び出すことにより、プログラム全体の最適化を実行します。
-xlinkopt
再配置可能なオブジェクトファイルのリンク時の最適化を実行します。
-xmemalign
(SPARC) メモリーの予想される最大境界整列と境界整列していないデータアクセスの動作を指定します。
-xopenmp
明示的な並列化のための OpenMP インタフェースをサポートします。このインタフェースには、ソースコード指令セット、実行時ライブラリルーチン、環境変数などが含まれます。
-xpagesize
スタックとヒープの優先ページサイズを設定します。
-xpagesize_stack
スタックの優先ページサイズを設定します。
-xpagesize_heap
ヒープの優先ページサイズを設定します。
- xpatchpadding
各関数を開始する前に、メモリー領域を予約します。
-xpg
gprof(1) でプロファイル処理するためのデータを収集するオブジェクトコードを用意します。
-xprofile
プロファイルのデータを収集、または最適化のためにプロファイルを使用します。
-xs
(Oracle Solaris) オブジェクトファイルからのデバッグ情報を実行可能ファイルにリンクします。
-xvector=lib
ベクトルライブラリ関数を自動呼び出しします。

A.1.3 データ境界整列のオプション

表 A-3  データ境界整列のオプション
オプション
アクション
-xchar_byte_order
複数文字からなる文字定数の文字を指定されたバイト順序で配置することにより、整数定数を生成します。
-xdepend
ループの繰り返し内部でのデータ依存性の解析およびループ再構成を実行します。
-xmemalign
(SPARC) メモリーの予想される最大境界整列と境界整列していないデータアクセスの動作を指定します。
-xsegment_align
ドライバがリンク行で特殊なマップファイルをインクルードします。

A.1.4 数値と浮動小数点のオプション

表 A-4  数値と浮動小数点のオプション
オプション
アクション
-flteval
(x86) 浮動小数点の評価を制御します。
-fma
浮動小数点の積和演算命令の自動生成を有効にします。
-fnonstd
浮動小数点演算ハードウェアの標準以外の初期化を行います。
-fns
標準以外の浮動小数点モードをオンにします。
-fprecision
(x86) 浮動小数点制御ワードの丸め精度モードのビットを初期化します
-fround
プログラム初期化中に実行時に確立される IEEE 754 丸めモードを設定します。
-fsimple
オプティマイザが浮動小数点演算に関する単純化した仮定を行うことを許可します。
-fsingle
コンパイラが float 式を倍精度ではなく単精度で評価します。
-fstore
(x86) コンパイラが浮動小数点の式または関数の値を代入の左辺の型に変換します。
-ftrap
起動時に IEEE 754 トラップモードを有効に設定します。
-nofstore
(x86) 浮動小数点の式または関数の値を代入の左辺の型に変換しません。
-xdepend
ループの繰り返し内部でのデータ依存性の解析およびループ再構成を実行します。
-xlibmieee
例外時の数学ルーチンの戻り値を強制的に IEEE 754 形式にします。
-xsfpconst
接尾辞のない浮動小数点定数を単精度で表します
-xvector
ベクトルライブラリ関数を自動呼び出しします。

A.1.5 並列化のオプション

表 A-5  並列化のオプション
オプション
アクション
-fopenmp
-xopenmp=parallel と同義です。
-mt
-D_REENTRANT -lthread に展開されるマクロオプションです。
-xautopar
複数プロセッサのための自動並列化を有効にします。
-xcheck
スタックオーバーフローの実行時検査を追加し、局所変数を初期化します。
-xdepend
ループの繰り返し内部でのデータ依存性の解析およびループ再構成を実行します。
-xloopinfo
並列化されているループとされていないループを示します。
-xopenmp
明示的な並列化のための OpenMP インタフェースをサポートします。このインタフェースには、ソースコード指令セット、実行時ライブラリルーチン、環境変数などが含まれます。
-xreduction
自動並列化での縮約の認識を有効にします。
-xrestrict
ポインタ値の関数パラメータを制限付きのポインタとして扱います。
-xthreadvar
スレッドローカルな変数の実装を制御します。
- xthroughput
システム上で多数のプロセスが同時に実行されている状況でアプリケーションが実行されることを指定します。
-xvpara
#pragma MP 指令が指定されているが、並列化用に正しく指定されていない可能性のあるループについて、警告します。
-Zll
lock_lint 用のプログラムデータベースは作成しますが、実行可能なコードは生成しません。

A.1.6 ソースコードのオプション

表 A-6  ソースコードのオプション
オプション
アクション
-A
#assert 前処理指令が実行されたかのように、name を述語として、指定された tokens に関連付けます。
-ansi
-std=c89 と同等です。
-C
前処理指令の行のものを除いて、プリプロセッサがコメントを削除することを抑止します。
-D
#define 前処理指令が実行されたかのように、name を指定された tokens に関連付けます。
-E
ソースファイルに対してプリプロセッサのみを実行し、その出力を stdout に送ります。
-fd
K&R 形式の関数の定義や宣言について報告します。
-H
現在のコンパイル中にインクルードされた各ファイルのパス名を、標準エラーに 1 行に 1 つずつ出力します。
-I
#include ファイルが相対ファイル名で検索されるリストに、ディレクトリを追加します。
–include
コンパイラが引数 filename を、まるでそれが主ソースファイルの先頭行に#include プリプロセッサ指令として存在しているかのように処理します。
-P
ソースファイルに対して C プリプロセッサのみを実行します。
-pedantic
ANSI 以外の構文に対するエラー/警告への厳密な準拠を適用します。
-preserve_argvalues
(x86) レジスタベースの関数の引数のコピーをスタックに保存します。
-std
C 言語規格を指定します。
-U
プリプロセッサシンボル name の初期定義をすべて削除します。
-X
-X オプションは ISO C 規格に準拠する度合いを指定します。
-xCC
C++ 形式のコメントを受け入れます。
-xc99
サポートされる C99 機能のコンパイラ認識を制御します。
-xchar
char が符号なしとして定義されているシステムからの移行を支援します。
-xcsi
C コンパイラが、ISO C ソース文字コード要件に準拠していないロケールで記述されたソースコードを受け入れることを許可します
-xM
指定された C プログラムに対してプリプロセッサのみを実行し、メイクファイル依存関係を生成して結果を標準出力に送信することを要求します。
-xM1
-xM と同様に依存関係を収集しますが、/usr/include のファイルは除外します。
-xMD
-xM と同様にメイクファイルの依存関係を生成しますが、コンパイルを含みます。
-xMF
メイクファイルの依存関係情報を保存するファイル名を指定します。
-xMMD
メイクファイル依存関係を生成しますが、システムヘッダーは除外します。
-xP
このモジュール内に定義されたすべての K&R C 関数のプロトタイプを出力します
-xpg
gprof(1) でプロファイル処理するためのデータを収集するオブジェクトコードを用意します。
-xtrigraphs
3 文字表記シーケンスの認識を決定します。
-xustr
16 ビット文字で構成された文字リテラルを認識します。

A.1.7 コンパイル済みコードのオプション

表 A-7  コンパイル済みコードのオプション
オプション
アクション
-c
ld(1) によるリンクを抑制し、ソースファイルごとに .o ファイルを現在の作業ディレクトリ内に生成するよう、コンパイラに指示します
-o
出力ファイルに名前を付けます
-S
アセンブリソースファイルは生成するがプログラムのアセンブルは行わないように、コンパイラに指示します。

A.1.8 コンパイルモードのオプション

表 A-8  コンパイルモードのオプション
オプション
アクション
-#
冗長モードを有効にします。この場合、コマンドオプションの展開方法が表示されるほか、呼び出された各コンポーネントも表示されます。
-###
呼び出される各コンポーネントを表示しますが、それらのコンポーネントは実際には実行しません。また、コマンドオプションの展開内容も表示されます。
-ansi
-std=c89 と同等です。
-features
C 言語の各種機能を有効または無効にします。
-keeptmp
コンパイル中に作成された一時ファイルを、自動的に削除する代わりに保持します。
-std
C 言語規格を指定します。
-temp
一時ファイルのディレクトリを定義します。
-V
コンパイラが実行する各コンポーネントの名前とバージョン ID を出力するよう、cc に指示します。
-W
C コンパイルシステムのコンポーネントに引数を渡します。
-X
-X オプションは ISO C 規格に準拠する度合いを指定します。
-xc99
サポートされる C99 機能のコンパイラ認識を制御します。
-xchar
char の符号を保持します
-xhelp
オンラインヘルプ情報を表示します。
-xjobs
コンパイラが作成するプロセスの数を設定します。
-xlang
-std フラグで指定されたデフォルトの libc の動作をオーバーライドします。
-xpch
共通の一連のインクルードファイル群を共有するソースファイルを持つアプリケーションのコンパイル時間を短縮します。
-xpchstop
活性文字列の最後のインクルードファイルを指定するために、-xpch と組み合わせて使用できます。
-xtime
各コンパイルコンポーネントによって使用される時間とリソースを報告します。
-Y
C コンパイルシステムのコンポーネントの場所用の新しいディレクトリを指定します。
-YA
コンポーネントが検索されるデフォルトディレクトリを変更します。
-YI
インクルードファイルが検索されるデフォルトディレクトリを変更します。
-YP
ライブラリファイルが検索されるデフォルトディレクトリを変更します。
-YS
起動オブジェクトファイル用のデフォルトディレクトリを変更します。

A.1.9 診断のオプション

表 A-9  診断のオプション
オプション
アクション
-errfmt
警告メッセージとの区別がすぐにつくように、エラーメッセージの先頭に「error:」という文字列を付加します。
-errhdr
ヘッダーファイルから指定したグループへの警告を制限します。
-erroff
コンパイラの警告メッセージを抑止します。
-errshort
型の不一致が見つかった際にコンパイラによって生成されるエラーメッセージに含める情報の詳細度を制御します。
-errtags
各警告メッセージのメッセージタグを表示します。
-errwarn
指定の警告メッセージが出力されると、cc はエラーステータスを返して終了します。
-pedantic
ANSI 以外の構文に対するエラー/警告への厳密な準拠を適用します。
-v
より厳格な意味検査を実行し、lint に似たほかの検査も有効にするよう、コンパイラに指示します。
-w
コンパイラの警告メッセージを抑止します。
-xanalyze
コードアナライザを使用して表示できるソースコードの静的分析を生成します。
-xe
ソースファイルの構文と意味のチェックだけを行い、オブジェクトや実行可能コードの出力はしません。
-xprevise
コードアナライザを使用して表示できるソースコードの静的分析を生成します。
-xs
(Oracle Solaris) オブジェクトファイルからのデバッグ情報を実行可能ファイルにリンクします。
-xtransition
K&R C と Oracle Solaris Studio ISO C との違いについて警告を発行します。
-xvpara
#pragma MP 指令が指定されているが、並列化用に正しく指定されていない可能性のあるループについて、警告します。

A.1.10 デバッグオプション

表 A-10  デバッグオプション
オプション
アクション
-g
デバッガ用の追加のシンボルテーブル情報を生成します。
-g3
追加のデバッグ情報を生成します。
-s
出力オブジェクトファイルからすべてのシンボリックデバッグ情報を削除します。
-xcheck
スタックオーバーフローの実行時検査を追加し、局所変数を初期化します。
-xdebugformat
stabs 形式ではなく dwarf 形式でデバッグ情報を生成します。
-xdebuginfo
デバッグおよび可観測性情報の出力量を制御します。
-xglobalize
ファイルの静的変数のグローバル化を制御します (関数は制御しません)。
-xkeep_unref
参照されない関数および変数の定義を維持します。
-xpagesize
スタックとヒープの優先ページサイズを設定します。
-xpagesize_stack
スタックの優先ページサイズを設定します。
-xpagesize_heap
ヒープの優先ページサイズを設定します。
-xs
dbx のためのオブジェクトファイルの自動読み取りを無効にします。
-xvis
(SPARC) VIS 命令セットに定義されているアセンブリ言語テンプレートをコンパイラが認識します。

A.1.11 リンクとライブラリのオプション

表 A-11  リンクとライブラリのオプション表
オプション
アクション
-B
リンク用ライブラリのバインディングを staticdynamic のどちらにするかを指定します。
-d
リンクエディタで動的リンクまたは静的リンクを指定します。
-G
動的にリンクされる実行可能ファイルの代わりに共有オブジェクトを生成するためのオプションを、リンクエディタに渡します。
-h
共有動的ライブラリに異なるバージョンのライブラリを持つような名前を割り当てます。
-i
すべての LD_LIBRARY_PATH 設定を無視するオプションを、リンカーに渡します。
-L
リンカーがライブラリを検索する際に使用するリストに、ディレクトリを追加します。
-l
オブジェクトライブラリ libname.so または libname.a とリンクします。
-mc
オブジェクトファイルの .comment セクションから、重複する文字列を削除します。
-mr
.comment セクションからすべての文字列を削除します。オブジェクトファイルの string を挿入します。
-Q
出力ファイルに識別情報を出力するかどうかを決定します。
-R
ライブラリの検索ディレクトリを指定するために使用されるディレクトリのコンマ区切りリストを、実行時リンカーに渡します。
-staticlib
Sun Performance ライブラリとのリンクが静的または動的のいずれであるかを指定します。
-xMerge
データセグメントをテキストセグメントにマージします。
-xcode
コードアドレス空間を指定します。
-xlang
-std フラグで指定されたデフォルトの libc の動作をオーバーライドします。
-xldscope
共有ライブラリをより速くより安全に作成するため、変数と関数の定義のデフォルトスコープを制御します。
-xnolib
デフォルトでライブラリを一切リンクしません
-xnolibmil
数学ライブラリルーチンをインライン化しません。
- xpatchpadding
各関数を開始する前に、メモリー領域を予約します。
-xsegment_align
ドライバがリンク行で特殊なマップファイルをインクルードします。
-xstrconst
このオプションは、将来のリリースでは推奨されません。代わりに、–features=[no%]conststrings を使用します。
デフォルトデータセグメントではなくテキストセグメントの読み取り専用データセクションに、文字列リテラルを挿入します。
-xunboundsym
動的に結合されているシンボルへの参照がプログラムに含まれているかどうかを指定します。

A.1.12 対象プラットフォームのオプション

表 A-12  対象プラットフォームのオプション
オプション
アクション
-m32 |-m64
コンパイルされたバイナリオブジェクトのメモリーモデルを指定します。
-xarch
命令セットアーキテクチャーを指定します。
-xcache
オプティマイザによって使用されるキャッシュプロパティーを定義します。
-xchip
オプティマイザによって使用されるターゲットプロセッサを指定します。
-xregs
生成されたコードのレジスタの使用法を指定します。
-xtarget
命令セットと最適化の対象とするシステムを指定します。

A.1.13 x86 固有のオプション

表 A-13  x86 固有のオプション
オプション
アクション
-flteval
浮動小数点の評価を制御します。
-fprecision
浮動小数点制御ワードの丸め精度モードのビットを初期化します
-fstore
コンパイラが浮動小数点式または関数の値を代入の左辺の型に変換します。
-nofstore
浮動小数点式または関数の値を代入の左辺の型に変換しません。
-preserve_argvalues
(x86) レジスタベースの関数の引数のコピーをスタックに保存します。
-xmodel
64 ビットオブジェクトの形式を Oracle Solaris x86 プラットフォーム用に変更します。

A.1.14 廃止オプション

次の表に、非推奨になったオプションを示します。引き続きコンパイラはこれらのオプションを受け付けますが、将来のリリースでそうならない可能性があります。できるだけ速やかに推奨代替オプションを使うようにしてください。

表 A-14  廃止オプションの表
オプション
アクション
-dalign
代わりに -xmemalign=8s を使用してください。
-KPIC (SPARC)
代わりに -xcode=pic32 を使用してください。
-Kpic (SPARC)
代わりに -xcode=pic13 を使用してください。
-misalign
代わりに -xmemalign=1i を使用してください。
-misalign2
代わりに -xmemalign=2i を使用してください。
-x386
代わりに、-xchip=generic を使用してください。
-x486
代わりに、-xchip=generic を使用してください。
-xa
代わりに、-xprofile=tcov を使用してください。
-xanalyze
コードアナライザを使用して表示できるソースコードの静的分析を生成します。
-xarch=v7,v8,v8a
廃止。
-xcg
-xarch-xchip-xcache のデフォルト値を活かすために、代わりに -O を使用してください。
–-xcrossfile
廃止。代わりに、–xipo を使用してください。
-xlicinfo
廃止。これに代わるオプションはありません。
-xnativeconnect
廃止。これに代わるオプションはありません。
-xprefetch=yes
代わりに - xprefetch=auto,explicit を使用します。
-xprefetch=no
代わりに -xprefetch=no%auto,no%explicit を使用します。
-xsb
廃止。これに代わるオプションはありません。
–xsbfast
廃止。これに代わるオプションはありません。
-xtarget=386
代わりに -xtarget=generic を使用してください。
-xtarget=486
代わりに -xtarget=generic を使用してください。
–xvector=yes
代わりに、–-xvector=lib を使用します。
–xvector=no
代わりに、–xvector=none を使用します。