2011-06-26 48 views

回答

6

它顯然有它自己的實現。只要您使用-openmp標誌進行編譯,則不需要指定其他庫。

$ icc -openmp t.c 
$ ldd ./a.out 
    ... 
    libiomp5.so => /opt/intel/Compiler/11.1/072/lib/intel64/libiomp5.so (0x00007fd8e7ac6000) 
    ... 
+0

不知何故 - 打開單獨做的事情。我正在'未定義引用__kmpc_begin'鏈接器錯誤。需要明確鏈接到libiomp5。 – pic11

+0

@ pic11:考慮到icc手冊頁,這實際上很奇怪。它甚至有一個'-openmp-link'選項,允許你爲openmp選擇靜態/動態鏈接。我很確定它應該自己處理庫。 – Mat

+1

@ pic11:你使用iccvars來設置編譯器嗎?你想使用什麼版本的icc?你想靜態鏈接還是動態鏈接?你使用的是什麼版本的linux? – ejd

2

您應該使用icc的內置openmp實現。只需在命令行上傳遞-openmp開關,就是這樣!

4

英特爾C++編譯器提供了自己的OpenMP庫,它不會鏈接到libgomp。您可以在icc/icpc上使用-static-intel標誌來擺脫libiomp5.so依賴項,這樣您的二進制文件就可以在未安裝英特爾C++編譯器的系統上運行。

$ icpc -openmp -static-intel t.cpp 
$ ./a.out