2012-12-05 187 views
1

我試圖編譯Linux上的OpenMP的Fortran代碼。我有大約230個子程序。我以前編譯代碼的代碼如下: 1)在各編譯子程序使用下面的命令並行程序給錯誤「未定義參考_Kmpc_ok_to_fork」

ifort -c -override-limits -openmp *.for 

然後所有的子程序現在有一個單獨的對象文件中的第一予。

2)然後我試圖通過下面的命令來編譯目標文件的可執行

ifort *.o -o myprogram 

我得到了以下錯誤:

WINDWAVE.F90:(.text+0x1c9d): undefined reference to `__kmpc_global_thread_num' 
WINDWAVE.F90:(.text+0x1cb0): undefined reference to `__kmpc_ok_to_fork' 
WINDWAVE.F90:(.text+0x1eea): undefined reference to `__kmpc_fork_call' 
WINDWAVE.F90:(.text+0x1f09): undefined reference to `__kmpc_serialized_parallel' 
WINDWAVE.F90:(.text+0x214b): undefined reference to `__kmpc_end_serialized_parallel' 
WINDWAVE.F90:(.text+0x2427): undefined reference to `__kmpc_for_static_init_4' 
WINDWAVE.F90:(.text+0x29c7): undefined reference to `__kmpc_for_static_fini' 
WINDWAVE.F90:(.text+0x29da): undefined reference to `__kmpc_barrier' 
WINDWAVE.F90:(.text+0x2a50): undefined reference to `__kmpc_for_static_init_4' 
WINDWAVE.F90:(.text+0x3773): undefined reference to `__kmpc_for_static_fini' 
WINDWAVE.F90:(.text+0x3786): undefined reference to `__kmpc_barrier' 
WINDWAVE.F90:(.text+0x37fc): undefined reference to `__kmpc_for_static_init_4' 
WINDWAVE.F90:(.text+0x4a58): undefined reference to `__kmpc_for_static_fini' 
WINDWAVE.F90:(.text+0x4a6b): undefined reference to `__kmpc_barrier' 
WINDWAVE.F90:(.text+0x4a8f): undefined reference to `__kmpc_single' 
WINDWAVE.F90:(.text+0x4d18): undefined reference to `__kmpc_end_single' 
WINDWAVE.F90:(.text+0x4d2b): undefined reference to `__kmpc_barrier' 
WINDWAVE.F90:(.text+0x4da9): undefined reference to `__kmpc_for_static_init_4' 
WINDWAVE.F90:(.text+0x4fc5): undefined reference to `__kmpc_for_static_fini' 
WINDWAVE.F90:(.text+0x4fd8): undefined reference to `__kmpc_barrier' 
WINDWAVE.F90:(.text+0x504e): undefined reference to `__kmpc_for_static_init_4' 
WINDWAVE.F90:(.text+0x596f): undefined reference to `__kmpc_for_static_fini' 
WINDWAVE.F90:(.text+0x5982): undefined reference to `__kmpc_barrier' 
WINDWAVE.F90:(.text+0x59fb): undefined reference to `__kmpc_for_static_init_4' 
WINDWAVE.F90:(.text+0x6369): undefined reference to `__kmpc_for_static_fini' 
WINDWAVE.F90:(.text+0x637c): undefined reference to `__kmpc_barrier' 
WINDWAVE.F90:(.text+0x63f2): undefined reference to `__kmpc_for_static_init_4' 
WINDWAVE.F90:(.text+0x6b8d): undefined reference to `__kmpc_for_static_fini' 
WINDWAVE.F90:(.text+0x6ba0): undefined reference to `__kmpc_barrier' 
WINDWAVE.o: In function `windwave_mp_fetch_': 
WINDWAVE.F90:(.text+0x9cfd): undefined reference to `__kmpc_global_thread_num' 
WINDWAVE.F90:(.text+0x9d10): undefined reference to `__kmpc_ok_to_fork' 
WINDWAVE.F90:(.text+0x9da0): undefined reference to `__kmpc_fork_call' 
WINDWAVE.F90:(.text+0x9dbc): undefined reference to `__kmpc_serialized_parallel' 
WINDWAVE.F90:(.text+0x9e59): undefined reference to `__kmpc_end_serialized_parallel' 
WINDWAVE.F90:(.text+0xa0ea): undefined reference to `__kmpc_for_static_init_4' 
WINDWAVE.F90:(.text+0xa109): undefined reference to `__kmpc_for_static_fini' 
WINDWAVE.F90:(.text+0xa118): undefined reference to `__kmpc_barrier' 

我使用英特爾13作曲家編譯程序。我不知道如何使用libiomp5md鏈接。

請幫我擺脫這種錯誤的。我嘗試了幾次,但我無法得到這個錯誤。

如果我不使用OpenMP的標誌程序運行,但它不當作OpenMP程序。

感謝

Jdbaba

回答

6

英特爾論壇上的快速掃描表明你可能需要在第二個命令的-openmp選項爲好,以使其對OpenMP的庫鏈接。

你可以通過谷歌搜索發現你自己__kmpc_global_thread_num

+0

吉姆,非常感謝。我在谷歌搜索,但沒有發現。我很高興我問我的問題在stackoverflow。再次感謝幫助我。 –

+0

@Jdbaba,接受解決問題的答案很重要,也很有禮貌。請這樣做。 –

+0

@HristoIliev感謝您提醒接受答案。由於我是新的在stackoverflow我不知道。我很高興與stackoverflow。謝謝 –