LLVM / Clang 8 Compilation of OpenMP Code in Windows

淺唱寂寞╮ 提交于 2020-04-15 02:57:48

问题


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:

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

My questions are:

  1. 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 with libomp.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 the clang driver both for compiling and linking and then the -fopenmp will work as in GCC.
  2. When I link with libomp.lib manually (Defining as a library for the linker) the output exe requires libomp.dll while the supplied OpenMP Dynamic Library is libiomp5md.dll. Is that a bug or is it because I link manually?
    Answer: The libomp.dll is supplied in the bin folder and not the lib folder.
  3. 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's cl compiler.
    Answer: Currently it can be done either with clang -fopenmp ..., clang-cl -Xclang -fopenmp ... or clang-cl /clang:-fopenmp ... (Which is equivalent of -Xclang -fopenmp).

Remark
On Windows I use Windows Driver of Clang using clang-cl.


回答1:


To compile and link OpenMP code with clang on Windows, you will have to pass -fopenmp to both the compiler and the linker:

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


来源:https://stackoverflow.com/questions/55976484/llvm-clang-8-compilation-of-openmp-code-in-windows

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!