Я использую версию Windows Clang (LLVM) 8 под Windows.
Я собираю код, который использует OpenMP .
В папке Clang lib
есть 2 файла, связанных с OpenMP:
libomp.lib
. libiomp5md.dll
.
Myвопросы:
- Когда я компилирую код, я использую флаги
-Xclang -fopenmp
для компилятора.В GCC и ICC использование флагов указывает компилятору автоматически связывать библиотеку OpenMP.Что насчет Clang?Делает ли это автоматически или я должен связываться с libomp.lib
вручную?Есть ли способ активировать автоматическое связывание с библиотекой OpenMP?
Ответ : На этот вопрос ответили Michael Klemm ответ ниже - Используйте *Драйвер 1031 * для компиляции и компоновки, а затем -fopenmp
будет работать так же, как в GCC
. - Когда я связываюсь с
libomp.lib
вручную (определяя как библиотека для компоновщика), вывод exe
требует libomp.dll
, в то время как поставляемая динамическая библиотека OpenMP - libiomp5md.dll
.Это ошибка или это потому, что я связываю вручную?
Ответ : libomp.dll
поставляется в папке bin
, а не в папке lib
. - Чтоправильный способ использовать OpenMP в Clang под Windows?Драйвер
clang-cl
не работает с /openmp
или -openmp
в качестве компилятора cl
MSVC.
Ответ : В настоящее время это можно сделать с помощью clang -fopenmp ...
, clang-cl -Xclang -fopenmp ...
или clang-cl /clang:-fopenmp ...
(что эквивалентно -Xclang -fopenmp
).
Примечание
В Windows я использую драйвер Windows Clang, используя clang-cl
.