gprof プロファイラを使用するプロファイル用にコンパイルします。
-p オプションを使用した場合と同様の形式でプロファイル用にコードをコンパイルします。ただし、詳細な統計情報を記録する実行時記録メカニズムも起動され、プログラムが正常に終了すると、gmon.out ファイルが生成されます。gprof を実行すると、実行プロファイルが生成されます。詳細は、gprof(1) のマニュアルページおよび『Fortran プログラミングガイド』を参照してください。
ライブラリオプションは、ソースファイルと .o ファイルのあとに指定してください (-pg ライブラリは静的)。
-pg を指定した場合、-xprofile でコンパイルする利点はありません。これら 2 つの機能は、他方で使用できるデータを生成せず、他方で生成されたデータを使用できません。
64 ビット Solaris プラットフォームで prof(1) または gprof(1)、32 ビット Solaris プラットフォームで gprof を使用して生成されたプロファイルには、おおよそのユーザー CPU 時間が含まれます。これらの時間は、メインの実行可能ファイルのルーチンと、実行可能ファイルをリンクするときにリンカー引数として指定した共有ライブラリのルーチンの PC サンプルデータ (pcsample(2) を参照) から導出されます。そのほかの共有ライブラリ (dlopen(3DL) を使用してプロセスの起動後に開かれたライブラリ) のプロファイルは作成されません。
32 ビット Solaris システムの場合、prof(1) を使用して生成されたプロファイルには、実行可能ファイルのルーチンだけが含まれます。32 ビット共有ライブラリのプロファイルは、-pg で実行可能ファイルをリンクし、gprof(1) を使用することで作成できます。
Solaris 10 ソフトウェアには、 -p でコンパイルされたシステムライブラリが含まれません。その結果、Solaris 10 プラットフォームで収集されたプロファイルには、システムライブラリルーチンの呼び出し回数が含まれません。
コンパイラオプション -p、-pg、または -xpg の実行時サポートは、スレッドに対して安全ではありません。そのため、マルチスレッドプログラムのコンパイルには使用しないでください。マルチスレッドを使用するプログラムをこれらのオプションを付けてコンパイルすると、実行時に、不正な結果やセグメント例外が発生する可能性があります。
コンパイルとリンクを分けて行う場合、-pg を付けてコンパイルしたときはリンクでも必ず -pg を付けてください。