LLVM / Clang 8 Zusammenstellung der OpenMP-Code in Windows

Ich bin mit der Windows-version von Clang (LLVM) 8 unter Windows.
Ich bin kompilieren, die einen code verwendet OpenMP.

Unter der lib - Ordner von Clang gibt es 2 Dateien, die OpenMP-related:

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

Meine Fragen sind:

  1. Wenn ich kompilieren Sie den code, den ich verwenden die flags -Xclang -fopenmp für den compiler. In GCC und ICC mit den flags sagen dem compiler, der link zu der OpenMP-Bibliothek automatisch. Was ist mit Klang? Tut er das automatisch oder muss ich einen link mit libomp.lib manuell? Gibt es eine Möglichkeit, trigger, die automatische Verknüpfung der OpenMP-Bibliothek?
  2. Wenn ich einen link mit libomp.lib manuell die Ausgabe exe benötigt libomp.dll, während die mitgelieferte OpenMP Dynamische Bibliothek libiomp5md.dll. Ist das ein bug oder ist es, weil ich den link manuell?
  3. Was ist die richtige Art und Weise zu nutzen OpenMP in Clang unter Windows?

Bemerkung
Auf Windows benutze ich den Windows-Treiber von Clang mit clang-cl.

1 Antworten

  • Michael Klemm
    4. Mai 2019

    Zu kompilieren und verknüpfen die OpenMP-code mit clang auf Windows, Sie müssen zu gehen -fopenmp sowohl der compiler und der linker:

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