我在 Windows 下使用 Clang (LLVM) 8 的 Windows 版本。
我正在编译使用 OpenMP 的代码。
在 Clang 的 lib
文件夹下有 2 个与 OpenMP 相关的文件:
libomp.lib
。 libiomp5md.dll
。 我的问题是:
-Xclang -fopenmp
。在 GCC 和 ICC 中使用标志告诉编译器自动链接 OpenMP 库。铿锵呢?它是自动执行的还是我必须手动与 libomp.lib
链接?有没有办法触发自动链接到 OpenMP 库?答案 :这是在 Michael Klemm 的 answer below 中回答的 - 使用
clang
驱动程序进行编译和链接,然后 -fopenmp
将像在 GCC
中一样工作。 libomp.lib
时(定义为链接器的库),输出 exe
需要 libomp.dll
而提供的 OpenMP 动态库是 libiomp5md.dll
。这是一个错误还是因为我手动链接?答案 :
libomp.dll
在 bin
文件夹中提供,而不是在 lib
文件夹中。 clang-cl
驱动程序不能使用 /openmp
或 -openmp
作为 MSVC 的 cl
编译器。答案 :目前可以使用
clang -fopenmp ...
、 clang-cl -Xclang -fopenmp ...
或 clang-cl /clang:-fopenmp ...
(相当于 -Xclang -fopenmp
)来完成。 备注
在 Windows 上,我使用
clang-cl
使用 Clang 的 Windows 驱动程序。 最佳答案
要在 Windows 上使用 clang 编译和链接 OpenMP 代码,您必须将 -fopenmp
传递给编译器和链接器:
clang -fopenmp -o bla.obj -c bla.c
clang -fopenmp -o bla.exe bla.obj
关于windows - LLVM/Clang 8 Windows 下 OpenMP 代码的编译,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55976484/