LLVM/Clang 8在Windows中编译OpenMP代码
我正在Windows下使用(LLVM)8的Windows版本。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驱动程
我正在编译一个使用 在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
文件夹中提供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
?