Sun Studio 12: Fortran プログラミングガイド

4.2 リンカーのデバッグオプションの指定

ライブラリの使用と読み込みに関する要約情報を得るには、LD_OPTIONS 環境変数を介してリンカーに追加オプションを渡します。コンパイラは、オブジェクトのバイナリファイルを生成するときに、これらのオプション (およびそのほかの必要なオプション) を使用してリンカーを呼び出します。

直接リンカーを呼び出すより、コンパイラを使用することをお勧めします。多くのコンパイラオプションが特定のリンカーオプションまたはライブラリリファレンスを必要としており、これらのオプションやリファレンスなしでリンクすると予期せぬ結果を招くおそれがあるからです。


demo% setenv LD_OPTIONS ’–m -Dfiles’
demo% f95 -o myprog myprog.f
例: LD_OPTIONS を使用してロードマップを作成する場合

リンカーのオプションには、コンパイラのコマンド行と同じものがあり、f95 コマンド上に直接指定できます。これらのオプションは、 -Bx-dx-G-hname-Rpath、および -ztext です。詳細は、f95(1) のマニュアルページか『Fortran ユーザーズガイド』を参照してください。

リンカーのオプションと環境変数の例と説明は、Solaris の『リンカーとライブラ リ』を参照してください。

4.2.1 ロードマップの作成

リンカーの -m オプションは、ライブラリのリンク情報を表示するロードマップを生成します。実行可能バイナリプログラムの構築中にリンクされるルーチンが、そのルーチンが取り出されたライブラリと共にリストされます。

例: –m を使用してロードマップを生成する場合


demo% setenv LD_OPTIONS '-m'
demo% f95 any.f
any.f:
 MAIN:
            リンクエディタメモリーマップ

出力        入力              仮想
セクション  セクション        アドレス        サイズ

.interp                        100d4             11
              .interp          100d4             11 (null)
.hash                          100e8             2e8
              .hash            100e8             2e8 (null)
.dynsym                        103d0             650
              .dynsym          103d0             650 (null)
.dynstr                        10a20             366
              .dynstr          10a20             366 (null)
.text                          10c90             1e70
.text                          10c90             00 /opt/SUNWspro/lib/crti.o
.text                          10c90             f4 /opt/SUNWspro/lib/crt1.o
.text                          10d84             00 /opt/SUNWspro/lib/values-xi.o
.text                          10d88             d20 sparse.o
...

4.2.2 ほかの情報のリスト

ほかにもリンカーのデバッグ機能があり、リンカーの –Dkeyword オプションで利用できます。完全なリストを表示するには、-Dhelp を使用します。

例: -Dhelp オプションを使用して、リンカーのデバッグ支援オプションをリストします。


demo% ld -Dhelp
      …
debug: args           入力引数の処理を表示します
debug: bindings       シンボルバインディングを表示します;
debug: detail         詳しい情報を提供します
debug: entry          エントランス条件の記述子を表示します
      …
demo%

たとえば、-Dfiles リンカーオプションは、リンクの処理中に参照されるすべてのファイルとライブラリをリストします。


demo% setenv LD_OPTIONS '-Dfiles'
demo% f95 direct.f
direct.f:
 MAIN direct:
debug: file=/opt/SUNWspro/lib/crti.o  [ ET_REL ]
debug: file=/opt/SUNWspro/lib/crt1.o  [ ET_REL ]
debug: file=/opt/SUNWspro/lib/values–xi.o  [ ET_REL ]
debug: file=direct.o  [ ET_REL ]
debug: file=/opt/SUNWspro/lib/libM77.a  [ archive ]
debug: file=/opt/SUNWspro/lib/libF77.so  [ ET_DYN ]
debug: file=/opt/SUNWspro/lib/libsunmath.a  [ archive ]
      …

ほかのリンカーオプションについての詳細は、『リンカーとライブラリ』を参照してください。

4.2.3 整合性のあるコンパイルとリンク

コンパイルとリンクを別のステップで行う場合は、整合性のあるコンパイルとリンクのオプションを選択することが重要です。オプションによっては、プログラムの一部をコンパイルするときに使用したら、リンクするときにも同じオプションを使用する必要があります。また、いくつかのオプションでは、リンクステップを含め、すべてのソースファイルをそのオプションでコンパイルする必要があります。

そのようなオプションは、『Fortran ユーザーズガイド』のオプションに関する説明の中で示されています。

例: -fast を使用して sbr.f をコンパイルし、C ルーチンをコンパイルしてから、別のステップでリンクします。


demo% f95 -c -fast sbr.f
demo% cc -c -fast simm.c
demo% f95 -fast sbr.o simm.o        リンクステップ; -fast をリンカーに渡す