Sun Studio 12:Fortran 编程指南

4.5.3 绑定选项

可以在编译时指定动态或静态库绑定。这些选项实际上是链接程序选项,但它们是由编译器识别并传递给链接程序的。

4.5.3.1 –Bdynamic | -Bstatic

–Bdynamic 用于在各种可能的情况下为共享动态绑定设置首选项。-Bstatic 将绑定只限制于静态库。

当库的静态和动态版本都可用时,使用该选项在命令行首选项间进行切换:

f95 prog.f -Bdynamic -lwells -Bstatic -lsurface

4.5.3.2 –dy | -dn

允许或不允许对整个可执行文件进行动态链接。(该选项只能在命令行上出现一次。)

–dy 允许链接动态共享库。-dn 不允许链接动态库。

4.5.3.3 64 位环境中的绑定

某些静态系统库(如 libm.alibc.a)不能在 64 位 Solaris 操作环境中使用。这些库只作为动态库提供。在这些环境中使用 -dn 将会导致错误,指示缺少某些静态系统库。另外,如果编译器命令行以 -Bstatic 结尾,其结果将是一样的。

要与特定库的静态版本进行链接,请使用类似下面的命令行:

f95 -o prog prog.f -Bstatic -labc -lxyz -Bdynamic

在此,链接的是用户的 libabc.alibxyz.a 文件(而不是 libabc.solibxyz.so),最后的 -Bdynamic 确保以动态方式链接包括系统库在内的其余各库。

在更复杂的情况下,可能必须在链接阶段根据需要用相应的 -Bstatic-Bdynamic 显式引用每个系统库和用户库。首先使用设置为 ’-Dfiles’LD_OPTIONS 获取全部所需库的列表。然后用 -nolib 执行链接步骤(禁止自动链接系统库)并显式引用所需的库。例如:

f95 -m64 -o cdf -nolib cdf.o -Bstatic -lsunmath \ -Bdynamic -lm -lc