JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris Studio 12.3: C++ ユーザーズガイド     Oracle Solaris Studio 12.3 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

パート I C++ コンパイラ

1.  C++ コンパイラの紹介

2.  C++ コンパイラの使用方法

2.1 はじめに

2.2 コンパイラの起動

2.2.1 コマンド構文

2.2.2 ファイル名に関する規則

2.2.3 複数のソースファイルの使用

2.3 バージョンが異なるコンパイラでのコンパイル

2.4 コンパイルとリンク

2.4.1 コンパイルとリンクの流れ

2.4.2 コンパイルとリンクの分離

2.4.3 コンパイルとリンクの整合性

2.4.4 64 ビットメモリーモデル用のコンパイル

2.4.5 コンパイラのコマンド行診断

2.4.6 コンパイラの構成

2.5 指示および名前の前処理

2.5.1 プラグマ

2.5.2 可変数の引数をとるマクロ

2.5.3 事前に定義されている名前

2.5.4 警告とエラー

2.6 メモリー条件

2.6.1 スワップ領域のサイズ

2.6.2 スワップ領域の増加

2.6.3 仮想メモリーの制御

2.6.4 メモリー条件

2.7 C++ オブジェクトに対する strip コマンドの使用

2.8 コマンドの簡略化

2.8.1 C シェルでの別名の使用

2.8.2 CCFLAGS によるコンパイルオプションの指定

2.8.3 make の使用

2.8.3.1 make での CCFLAGS の使用

3.  C++ コンパイラオプションの使い方

パート II C++ プログラムの作成

4.  言語拡張

5.  プログラムの編成

6.  テンプレートの作成と使用

7.  テンプレートのコンパイル

8.  例外処理

9.  プログラムパフォーマンスの改善

10.  マルチスレッドプログラムの構築

パート III ライブラリ

11.  ライブラリの使用

12.  C++ 標準ライブラリの使用

13.  従来の iostream ライブラリの使用

14.  ライブラリの構築

パート IV 付録

A.  C++ コンパイラオプション

B.  プラグマ

用語集

索引

2.6 メモリー条件

コンパイルに必要なメモリー量は、次の要素によって異なります。

SPARC プラットフォームでメモリーが足りなくなると、オプティマイザは最適化レベルを下げて現在の手続きを実行することでメモリー不足を補おうとします。それ以後のルーチンについては、コマンド行の -xOlevel オプションで指定した元のレベルに戻ります。

1 つのファイルに多数のルーチンが入っている場合、それをコンパイルすると、メモリーやスワップ領域が足りなくなることがあります。最適化のレベルを下げてみてください。あるいは、最大のプロシージャを、個別のファイルに分割してください。

2.6.1 スワップ領域のサイズ

現在のスワップ領域は swap -s コマンドで表示できます。詳細は、swap(1M) のマニュアルページを参照してください。

swap コマンドを使った例を次に示します。

example% swap -s
total: 40236k bytes allocated + 7280k reserved = 47516k used, 1058708k available

2.6.2 スワップ領域の増加

ワークステーションのスワップ領域を増やすには、mkfile(1M) と swap(1M) コマンドを使用します。そのためには、スーパーユーザーである必要があります。mkfile コマンドは特定サイズのファイルを作成し、swap -a はこのファイルをシステムのスワップ領域に追加します。

 example# mkfile -v 90m /home/swapfile
 /home/swapfile 94317840 bytes
 example# /usr/sbin/swap -a /home/swapfile

2.6.3 仮想メモリーの制御

1 つの手続きが数千行からなるような非常に大きなルーチンを -xO3 以上でコンパイルすると、大容量のメモリーが必要になることがあります。このようなときには、システムのパフォーマンスが低下します。メモリーフットプリントを制御するには、1 つのプロセスで使用できる仮想メモリーの量を制限します。

sh シェルで仮想メモリーを制限するには、ulimit コマンドを使用します。詳細は、sh(1) のマニュアルページを参照してください。

次の例では、仮想メモリーを 4G バイトに制限しています。

 example$ ulimit -d 4000000

csh シェルで仮想メモリーを制限するには、limit コマンドを使用します。 詳細は、csh(1) のマニュアルページを参照してください。

次の例でも、仮想メモリーを 4G バイトに制限しています。

 example% limit datasize 4G

どちらの例でも、オプティマイザは データ空間が 4G バイトになった時点でメモリー不足が発生しないような手段をとります。

仮想メモリーの限度は、システムの合計スワップ領域の範囲内です。さらに実際は、大きなコンパイルが行われているときにシステムが正常に動作できるだけの小さい値である必要があります。

スワップ領域の半分以上がコンパイルによって使用されることがないようにしてください。

8G バイトのスワップ領域のあるマシンでは、次のコマンドを使用します。

sh シェルの場合

example$ ulimit -d 4000000

csh の場合

example% limit datasize 4G

最適な設定は、必要な最適化レベルと使用可能な実メモリーと仮想メモリーの量によって異なります。

2.6.4 メモリー条件

ワークステーションには、少なくとも 2G バイトのメモリーを実装する必要があります。詳細な要件については、製品のリリースノートを参照してください。