動的ライブラリを構築する際、初期化された共通ブロックを同じライブラリに集め、そのほかのライブラリの前に参照することにより、共通ブロックを正しく初期化する (DATA または BLOCK DATA を使用) ことを保証します。
例:
demo% f95 -G -xcode=pic32 -o init.so blkdat1.f blkdat2.f blkdat3.f demo% f95 -o prog main.f init.so otherlib1.so otherlib2.so |
最初のコンパイルにより、共通ブロックを定義し、BLOCK DATA 単位でそれらを初期化するファイルの動的ライブラリが作成されます。2 番目のコンパイルにより、実行可能バイナリが作成され、コンパイル済み主プログラムをアプリケーションが必要とする動的ライブラリにリンクします。すべての共通ブロックを初期化する動的ライブラリは、その他すべてのライブラリより前に最初に現れます。これにより、ブロックが正しく初期化されたことが保証されます。