某些静态系统库(如 libm.a 和 libc.a)不能在 64 位 Solaris 操作环境中使用。这些库只作为动态库提供。在这些环境中使用 -dn 将会导致错误,指示缺少某些静态系统库。另外,如果编译器命令行以 -Bstatic 结尾,其结果将是一样的。
要与特定库的静态版本进行链接,请使用类似下面的命令行:
f95 -o prog prog.f -Bstatic -labc -lxyz -Bdynamic
在此,链接的是用户的 libabc.a 和 libxyz.a 文件(而不是 libabc.so 或 libxyz.so),最后的 -Bdynamic 确保以动态方式链接包括系统库在内的其余各库。
在更复杂的情况下,可能必须在链接阶段根据需要用相应的 -Bstatic 或 -Bdynamic 显式引用每个系统库和用户库。首先使用设置为 ’-Dfiles’ 的 LD_OPTIONS 获取全部所需库的列表。然后用 -nolib 执行链接步骤(禁止自动链接系统库)并显式引用所需的库。例如:
f95 -m64 -o cdf -nolib cdf.o -Bstatic -lsunmath \ -Bdynamic -lm -lc