Sun Studio 12:Fortran 编程指南

4.2 指定链接程序调试选项

通过 LD_OPTIONS 环境变量向链接程序传递其他选项,可以获得库用法和库加载方面的摘要信息。在生成目标二进制文件时,编译器会用这些选项(以及它要求的其他选项)调用链接程序。

始终建议使用编译器调用链接程序,而不是直接调用链接程序,因为许多编译器选项要求特定的链接程序选项或库引用,缺少这些,链接时会产生无法预料的结果。 示例:使用 LD_OPTIONS 创建加载映射


demo% setenv LD_OPTIONS ’–m -Dfiles’
demo% f95 -o myprog myprog.f

某些链接程序选项具有等价的编译器命令行选项,它们可以直接在 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:
            LINK EDITOR MEMORY MAP

output    input    virtual
section   section  address         size

.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           display input argument processing
debug: bindings       display symbol binding;
debug: detail         provide more information
debug: entry          display entrance criteria descriptors
      …
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        link step; passes  -fast  to the linker