編譯 XL Fortran 程式
這些指令基本上都接受相同的 Fortran 語言。 主要差異在於它們使用不同的預設選項 (您可以閱讀 配置 檔 /opt/IBM/xlf/16.1.0/etc/xlf.cfg.nn 來查看,其中 .nn 代表作業系統層次)。
呼叫指令會執行必要的步驟來編譯 Fortran 原始檔、組合任何 .s 檔案,以及將物件檔和程式庫鏈結至可執行程式。 特別是 xlf_r、 xlf_r7, xlf90_r、 xlf90_r7, xlf95_r, xlf95_r7, xlf2003_r、 及 xlf2008_r 指令使用多執行緒作業 (程式庫、 crt0_r.o, 等) 的元件來鏈結及連結物件檔。
| 驅動程式呼叫 1 | 主要功能 | 鏈結檔案庫 |
|---|---|---|
| xlf | 選取的 Fortran 語言層次 2 | libxlf90.a |
| xlf_r | 所選語言層次的安全執行緒版本,作業系統預設 POSIX pthreads API。 2 | libxlf90.a |
| xlf_r7 | 所選語言層次的安全執行緒版本,草稿 7 POSIX pthreads API。 | libxlf90.a |
| f77, fort77 | FORTRAN 77 | libxlf90.a |
| xlf90, f90 | Fortran 90 | libxlf90.a |
| xlf90_r | 安全執行緒 Fortran 90,作業系統預設 POSIX pthreads API | libxlf90.a |
| xlf90_r7 | 安全執行緒 Fortran 90 ,草稿 7 POSIX pthreads API | libxlf90.a |
| xlf95, f95 | Fortran 95 | libxlf90.a |
| xlf95_r | 安全執行緒 Fortran 95,作業系統預設 POSIX pthreads API | libxlf90.a |
| xlf95_r7 | 安全執行緒 Fortran 95 ,草稿 7 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/xlf/16.1.0/bin 目錄中。
xlf、 xlf_r及 xlf_r7 呼叫指令會根據原始檔名稱的字尾來選取適當的語言層次。 不論 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 會在執行時期判斷您的應用程式是否有執行緒作業。
XL Fortran 除了提供 libxlf90.a之外,還提供 libxlf90_t.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、 xlf_r7、 xlf90_r、 xlf90_r7、 xlf95_r、 xlf95_r7、 xlf2003_r、 或 xlf2008_r 呼叫指令可確保適當的鏈結。
- 若為 f77、 fort77、 f90、 f95、 f2003、 xlf、 xlf90、 xlf95、 xlf2003, 以及 xlf2008 呼叫指令,依預設指引觸發程式是 IBM* 。
- 對於所有其他呼叫指令,依預設指引觸發程式為 IBM* 和 IBMT 。
- 當 -qsmp 生效時,編譯器也會辨識 IBMP、 SMP$及 $OMP 指引觸發程式。
- 當 -qthreaded 生效時,編譯器也會辨識 IBMT 指引觸發程式。
