編譯 XL Fortran 程式

若要編譯來源程式,請使用其中一個 xlfxlf_r xlf_r7f77fort77xlf90xlf90_r xlf90_r7 f90xlf95xlf95_r xlf95_r7 f95xlf2003xlf2003_rf2003 xlf2008xlf2008_rf2008 指令,其格式如下:
讀取語法圖跳過視覺化語法圖xlfxlf_rxlf_r7f77fort77xlf90xlf90_rxlf90_r7f90xlf95xlf95_rxlf95_r7f95xlf2003xlf2003_rf2003xlf2008xlf2008_rf2008cmd_line_optinput_file

這些指令基本上都接受相同的 Fortran 語言。 主要差異在於它們使用不同的預設選項 (您可以閱讀 配置/opt/IBM/xlf/16.1.0/etc/xlf.cfg.nn 來查看,其中 .nn 代表作業系統層次)。

呼叫指令會執行必要的步驟來編譯 Fortran 原始檔、組合任何 .s 檔案,以及將物件檔和程式庫鏈結至可執行程式。 特別是 xlf_r xlf_r7, xlf90_rxlf90_r7, xlf95_r, xlf95_r7, xlf2003_rxlf2008_r 指令使用多執行緒作業 (程式庫、 crt0_r.o, 等) 的元件來鏈結及連結物件檔。

下表彙總您可以使用的呼叫指令:
表 1. XL Fortran 呼叫指令
驅動程式呼叫 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
附註:
  1. 這些呼叫指令包含在 /opt/IBM/xlf/16.1.0/bin 目錄中。
  2. xlf xlf_rxlf_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_rxlf_r7xlf90_rxlf90_r7xlf95_rxlf95_r7xlf2003_r、 或 xlf2008_r 呼叫指令可確保適當的鏈結。

呼叫指令或選項所隱含的指引觸發程式如下所示:
  • 若為 f77fort77f90f95f2003xlfxlf90xlf95xlf2003, 以及 xlf2008 呼叫指令,依預設指引觸發程式是 IBM*
  • 對於所有其他呼叫指令,依預設指引觸發程式為 IBM*IBMT
  • -qsmp 生效時,編譯器也會辨識 IBMPSMP$$OMP 指引觸發程式。
  • -qthreaded 生效時,編譯器也會辨識 IBMT 指引觸發程式。