生成动态库时,通过将已初始化的公共块集中到同一库中并在其他所有库之前引用该库,可确保正确初始化公共块(用 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 单元中对其进行初始化的文件创建一个动态库。第二次编译创建可执行二进制文件,将已编译的主程序与应用程序所需的动态库链接起来。注意,初始化所有公共块的动态库在其他所有库之前首先出现。这样将确保正确地初始化这些块。