I'm using the Windows version of Clang (LLVM) 8 under Windows.
I'm compiling a code which uses OpenMP.
Under the lib
folder of Clang there are 2 files which are OpenMP related:
libomp.lib
.libiomp5md.dll
.
My questions are:
- When I compile the code I use the flags
-Xclang -fopenmp
for the compiler. In in GCC and ICC using the flags tell the compiler to link the OpenMP library automatically. What about Clang? Does it do it automatically or must I link withlibomp.lib
manually? Is there a way to trigger automatic linking to the OpenMP library?
Answer: This was answered in Michael Klemm's answer below - Use theclang
driver both for compiling and linking and then the-fopenmp
will work as inGCC
. - When I link with
libomp.lib
manually (Defining as a library for the linker) the outputexe
requireslibomp.dll
while the supplied OpenMP Dynamic Library islibiomp5md.dll
. Is that a bug or is it because I link manually?
Answer: Thelibomp.dll
is supplied in thebin
folder and not thelib
folder. - What's the proper way to utilize OpenMP in Clang under Windows? The
clang-cl
driver doesn't work with/openmp
or-openmp
as the MSVC'scl
compiler.
Answer: Currently it can be done either withclang -fopenmp ...
,clang-cl -Xclang -fopenmp ...
orclang-cl /clang:-fopenmp ...
(Which is equivalent of-Xclang -fopenmp
).
Remark
On Windows I use Windows Driver of Clang using clang-cl
.