我在 Windows 下使用 Clang (LLVM) 8 的 Windows 版本。
我正在编译使用 OpenMP 的代码。

在 Clang 的 lib 文件夹下有 2 个与 OpenMP 相关的文件:

  • libomp.lib
  • libiomp5md.dll

  • 我的问题是:
  • 当我编译代码时,我使用编译器的标志 -Xclang -fopenmp。在 GCC 和 ICC 中使用标志告诉编译器自动链接 OpenMP 库。铿锵呢?它是自动执行的还是我必须手动与 libomp.lib 链接?有没有办法触发自动链接到 OpenMP 库?
    答案 :这是在 Michael Klemmanswer below 中回答的 - 使用 clang 驱动程序进行编译和链接,然后 -fopenmp 将像在 GCC 中一样工作。
  • 当我手动链接 libomp.lib 时(定义为链接器的库),输出 exe 需要 libomp.dll 而提供的 OpenMP 动态库是 libiomp5md.dll 。这是一个错误还是因为我手动链接?
    答案 : libomp.dllbin 文件夹中提供,而不是在 lib 文件夹中。
  • 在 Windows 下在 Clang 中使用 OpenMP 的正确方法是什么? 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/

    10-11 23:10
    查看更多