Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LLVM/Clang 8在Windows中编译OpenMP代码_Windows_Compilation_Clang_Openmp_Llvm - Fatal编程技术网

LLVM/Clang 8在Windows中编译OpenMP代码

LLVM/Clang 8在Windows中编译OpenMP代码,windows,compilation,clang,openmp,llvm,Windows,Compilation,Clang,Openmp,Llvm,我正在Windows下使用(LLVM)8的Windows版本。 我正在编译一个使用 在Clang的lib文件夹下,有两个与OpenMP相关的文件: libomp.lib libiomp5md.dll 我的问题是: 编译代码时,我使用编译器的标志-Xclang-fopenmp。在GCC和ICC中,使用标志告诉编译器自动链接OpenMP库。叮当声呢?它是自动完成的还是我必须手动链接到libomp.lib?有没有办法触发到OpenMP库的自动链接? Answer:这是在的中回答的-使用clang驱动程

我正在Windows下使用(LLVM)8的Windows版本。
我正在编译一个使用

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

  • libomp.lib
  • libiomp5md.dll
  • 我的问题是:

  • 编译代码时,我使用编译器的标志
    -Xclang-fopenmp
    。在GCC和ICC中,使用标志告诉编译器自动链接OpenMP库。叮当声呢?它是自动完成的还是我必须手动链接到
    libomp.lib
    ?有没有办法触发到OpenMP库的自动链接?
    Answer:这是在的中回答的-使用
    clang
    驱动程序进行编译和链接,然后
    -fopenmp
    将与
    GCC
    中一样工作
  • 当我手动链接
    libomp.lib
    时(定义为链接器的库),输出
    exe
    需要
    libomp.dll
    ,而提供的OpenMP动态库是
    libiomp5md.dll
    。这是错误还是因为我手动链接?
    Answer
    libomp.dll
    bin
    文件夹中提供,而不是
    lib
    文件夹中提供
  • 在Windows下使用OpenMP的正确方法是什么?
    clang cl
    驱动程序不能与
    /openmp
    -openmp
    作为MSVC的
    cl
    编译器一起使用。
    回答:目前可以使用
    clang-fopenmp…
    clang-Xclang-fopenmp…
    clang-cl/clang:-fopenmp…
    (相当于
    -Xclang-fopenmp
  • 备注

    在Windows上,我使用Windows Clang驱动程序使用
    Clang cl

    在Windows上编译OpenMP代码并将其与Clang链接,您必须将
    -fopenmp
    传递给编译器和链接器:

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

    在Windows上我不这么认为-
    lld链接:警告:忽略未知参数:-fopenmp
    (这是过程的输出)。我正在使用编译器驱动程序调用链接器。如果这样做,编译器驱动程序将在使用
    -fopenmp
    时为链接器提供正确的库。如果您想自己调用链接器,请在编译器中使用-v以了解编译器驱动程序使用的链接器选项。确定。那么编译的EXE需要什么
    DLL
    ?你能查一下吗?它是
    libiomp5md.dll
    还是
    libomp.dll
    ?对我来说:
    “C:\\ProgramFiles(x86)\\Microsoft Visual Studio\\2017\\BuildTools\\VC\\Tools\\MSVC\\14.13.26128\\bin\\HostX64\\x64\\link.exe”-out:bla.exe-defaultlib:libcmt”-libpath:C:\\ProgramFiles(x86)\\Microsoft Visual Studio\\2017\\BuildTools\\VC\\Tools\\MSVC\\14.13.26128\\lib\\x64”“-libpath:C:\\Program Files(x86)\\Windows Kits\\10\\lib\\10.0.16299.0\\ucrt\\x64”“-libpath:C:\\Program Files(x86)\\Windows Kits\\10\\lib\\10.0.16299.0\\um\\x64“-nologo-nodefaultlib:vcomp.lib-nodefaultlib:vcompd.lib“-libpath:C:\\Program Files\\LLVM\\bin/。/lib“-defaultlib:libomp.lib bla.obj
    我的问题是它链接到
    libomp.lib
    ,它需要
    libomp.dll
    ,而Clang提供
    libiomp5md.dll
    。我需要以某种方式进行编译,使其与提供的OpenMP动态库相匹配,即
    libiomp5md.dll
    。检查您的
    EXE
    的依赖关系,OpenMP需要哪个
    DLL