LLVM / Clang 8 Компиляция кода OpenMP в Windows - PullRequest
0 голосов
/ 03 мая 2019

Я использую версию Windows Clang (LLVM) 8 под Windows.
Я собираю код, который использует OpenMP .

В папке Clang lib есть 2 файла, связанных с OpenMP:

  1. libomp.lib.
  2. libiomp5md.dll.

Myвопросы:

  1. Когда я компилирую код, я использую флаги -Xclang -fopenmp для компилятора.В GCC и ICC использование флагов указывает компилятору автоматически связывать библиотеку OpenMP.Что насчет Clang?Делает ли это автоматически или я должен связываться с libomp.lib вручную?Есть ли способ активировать автоматическое связывание с библиотекой OpenMP?
    Ответ : На этот вопрос ответили Michael Klemm ответ ниже - Используйте *Драйвер 1031 * для компиляции и компоновки, а затем -fopenmp будет работать так же, как в GCC.
  2. Когда я связываюсь с libomp.lib вручную (определяя как библиотека для компоновщика), вывод exeтребует libomp.dll, в то время как поставляемая динамическая библиотека OpenMP - libiomp5md.dll.Это ошибка или это потому, что я связываю вручную?
    Ответ : libomp.dll поставляется в папке bin, а не в папке lib.
  3. Чтоправильный способ использовать 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.

1 Ответ

1 голос
/ 04 мая 2019

Чтобы скомпилировать и связать код OpenMP с помощью clang в Windows, вам нужно будет передать -fopenmp как компилятору, так и компоновщику:

clang -fopenmp -o bla.obj -c bla.c
clang -fopenmp -o bla.exe bla.obj
...