编译 IBM Open XL Fortran 程序
本节说明如何使用调用命令编译源程序。
这些命令基本上都接受相同的 Fortran 语言。 主要区别在于它们使用不同的缺省选项 (您可以通过读取 配置 文件 /opt/IBM/openxlf/17.1.1/etc/xlf.cfg.nn ,其中 .nn 表示操作系统级别来查看这些选项)。
调用命令执行必要的步骤来编译 Fortran 源文件,组装任何 .s 文件,并将对象文件和库链接到可执行程序中。 尤其是, xlf_r, xlf90_r, xlf95_r, xlf2003_r, 和 xlf2008_r 命令使用多线程组件 (库, crt0_r.o, 等) 来链接和绑定对象文件。
| 驱动程序调用 1 | 首要功能 | 链接库 |
|---|---|---|
| xlf | 选定的 Fortran 语言级别 2 | libxlf90.a |
| xlf_r | 所选语言级别的线程安全版本,操作系统缺省 POSIX pthreads API。 2 | libxlf90.a |
| f77, fort77 | FORTRAN 77 | libxlf90.a |
| xlf90, f90 | Fortran 90 | libxlf90.a |
| xlf90_r | 线程安全 Fortran 90,操作系统缺省 POSIX pthreads API | libxlf90.a |
| xlf95, f95 | Fortran 95 | libxlf90.a |
| xlf95_r | 线程安全 Fortran 95,操作系统缺省 POSIX pthreads API | libxlf90.a |
| xlf2003 | Fortran 2003 | libxlf90.a |
| xlf2003_r | 线程安全 Fortran 2003,操作系统缺省值 POSIX pthreads API | libxlf90.a |
| f2003 | Fortran 2003 | libxlf90.a |
| xlf2008 | Fortran 2008 | libxlf90.a |
| xlf2008_r | 线程安全 Fortran 2008,操作系统缺省值 POSIX pthreads API | libxlf90.a |
| f2008 | Fortran 2008 | libxlf90.a |
- 这些调用命令包含在 /opt/IBM/openxlf/17.1.1/bin 目录中。
xlf 和 xlf_r 调用命令根据源文件名的后缀选择相应的语言级别。 无论 Fortran 源文件名称后缀是什么,其他调用命令的行为始终一致。 请参阅以下示例:
行为如下:xlf program1.f program2.f90 program3.f95 program4.f03 program5.f08- 编译
program1.f文件时就如同调用命令是 f77。 - 编译
program2.f90文件时就如同调用命令是 xlf90。 - 编译
program3.f95文件时就如同调用命令是 xlf95。 - 编译
program4.f03文件时就如同调用命令是 xlf2003。 - 编译
program5.f08文件时就如同调用命令是 xlf2008。
- 编译
为线程应用程序和非线程应用程序提供了 libxlf90.a 。 XL Fortran 在运行时确定您的应用程序是否是线程的。
IBM® Open XL Fortran 提供了库 libxlf90_t.a以及 libxlf90.a。 libxlf90_t.a 导出与 libxlf90.a 相同的入口点。 与 libxlf90.a不同, libxlf90_t.a 不提供线程同步 或线程重入例程。 因此,一次只能有一个 Fortran 线程可以执行 I/O 操作或调用 Fortran 内在机制。 可以在只有一个 Fortran 线程的多线程应用程序中使用 libxlf90_t.a 而不是 libxlf90.a ,以避免 libxlf90.a中的线程同步开销。
当您将多线程可执行文件与多个 Fortran 线程绑定时,应显示 -lxlf90 而不是 -lxlf90_t 在命令行中。 请注意,使用 xlf_r, xlf90_r, xlf95_r, xlf2003_r或 xlf2008_r 调用命令可确保正确链接。
- 对于 f77, fort77, f90, f95, f2003, xlf, xlf90, xlf95, xlf2003和 xlf2008 调用命令,缺省情况下,伪指令触发器为 IBM* 。
- 对于所有其他调用命令,缺省情况下,伪指令触发器为 IBM* 和 IBMT 。
- 当 -qthreaded 生效时,编译器还会识别 IBMT 伪指令触发器。
