如何在windows上使用mingw-w64头文件

我有铿锵3.9从http://llvm.org/releases/3.9.0/LLVM-3.9.0-win32.exe

clang version 3.9.0 (branches/release_39) Target: i686-pc-windows-msvc Thread model: posix InstalledDir: C:\Program Files\LLVM\bin 

gcc 6.2.0(Mingw-w64)

 gcc (i686-posix-dwarf-rev1, Built by MinGW-W64 project) 6.2.0 Copyright (C) 2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 

我的电脑上没有安装MSVC,也没有安装Windows SDK。 我需要clang的一些特殊function,我想用gccreplace它,更具体地说用g ++replace它,因为我使用C ++。

当我尝试编译简单文件时,我得到:

致命错误:找不到'string'文件

这是否意味着我目前的叮当声安装不支持windows上的mingw? 基本上我只想使用我的mingw-w64安装中的头文件和库文件。 我正在寻找解决scheme,没有find任何东西。 我不知道该怎么办。

这是否也意味着我的铛安装取决于MSVC,我没有?

编辑:从本页的评论: http : //blog.johannesmp.com/2015/09/01/installing-clang-on-windows-pt2/

这不适用于LLVM的最新二进制文件(3.7.1,3.8,3.9),因为它们是用Visual Studio和Visual Studio编译的。

您可以安装完整的Visual Studio 2015(大约需要8GB),或者安装“Microsoft Visual C ++ Build Tools 2015 Update 3”,其中只包含来自VS的命令行工具以及Clang需要的标准C ++头文件。

我认为这解释了一切。 这是否意味着我需要mingw构build才能使用mingw?

正确的事情是…

 clang -target i686-pc-windows-gnu test.c -otest.exe 

或者,如果你想64位输出…

 clang -target x86_64-pc-windows-gnu test.c -otest.exe 

铿锵将确定您的路径中的标题和库的位置。 确保你的路径中只有Mingw的版本。

默认情况下,当前版本的Clang(5.0.0截至目前)将以x86_64-pc-windows-msvc

作为例子…

 Microsoft Windows [Version 10.0.16299.19] (c) 2017 Microsoft Corporation. All rights reserved. C:\Users\burito>copy con hello.c #include <stdio.h> int main(int argc, char *argv[]) { printf("Hello World!\n"); return 0; } ^Z 1 file(s) copied. C:\Users\burito>clang hello.c -ohello.exe --verbose clang version 5.0.0 (tags/RELEASE_500/final) Target: x86_64-pc-windows-msvc Thread model: posix InstalledDir: C:\Program Files\LLVM\bin clang.exe: warning: unable to find a Visual Studio installation; try running Clang from a developer command prompt [-Wmsvc-not-found] "C:\\Program Files\\LLVM\\bin\\clang.exe" -cc1 -triple x86_64-pc-windows- msvc18.0.0 -emit-obj -mrelax-all -mincremental-linker-compatible -disable-free - disable-llvm-verifier -discard-value-names -main-file-name hello.c -mrelocation- model pic -pic-level 2 -mthread-model posix -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -target-cpu x86-64 -momit-leaf-frame-pointer -v -dwarf-column-info -debugger-tuning=gdb -resource-dir "C:\\Program Files\\LLVM\\lib\\clang\\5.0.0" -internal-isystem "C:\\Program Files\\LLVM\\lib\\clang\\5.0.0\\include" -internal-isystem C:/Program Files/Microsoft Visual Studio 10.0/VC/include -internal-isystem C:/Program Files/Microsoft Visual Studio 9.0/VC/include -internal-isystem C:/Program Files/Microsoft Visual Studio 9.0/VC/PlatformSDK/Include -internal-isystem C:/Program Files/Microsoft Visual Studio 8/VC/include -internal-isystem C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include -fdebug-compilation-dir "C:\\Users\\burito" -ferror-limit 19 -fmessage-length 120 -fms-extensions -fms-compatibility -fms-compatibility-version=18 -fno-threadsafe-statics -fdelayed-template-parsing -fobjc-runtime=gcc -fdiagnostics-show-option -fcolor-diagnostics -o "C:\\Users\\burito\\AppData\\Local\\Temp\\hello-5c526d.o" -xc hello.c clang -cc1 version 5.0.0 based upon LLVM 5.0.0 default target x86_64-pc-windows-msvc ignoring nonexistent directory "C:/Program Files/Microsoft Visual Studio 10.0/VC/include" ignoring nonexistent directory "C:/Program Files/Microsoft Visual Studio 9.0/VC/include" ignoring nonexistent directory "C:/Program Files/Microsoft Visual Studio 9.0/VC/PlatformSDK/Include" ignoring nonexistent directory "C:/Program Files/Microsoft Visual Studio 8/VC/include" ignoring nonexistent directory "C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include" #include "..." search starts here: #include <...> search starts here: C:\Program Files\LLVM\lib\clang\5.0.0\include End of search list. hello.c:1:10: fatal error: 'stdio.h' file not found #include <stdio.h> ^~~~~~~~~ 1 error generated. C:\Users\burito>clang hello.c -ohello.exe --verbose -target x86_64-pc-windows-gnu clang version 5.0.0 (tags/RELEASE_500/final) Target: x86_64-pc-windows-gnu Thread model: posix InstalledDir: C:\Program Files\LLVM\bin "C:\\Program Files\\LLVM\\bin\\clang.exe" -cc1 -triple x86_64-pc-windows-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name hello.c -mrelocation-model pic -pic-level 2 -mthread-model posix -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -target-cpu x86-64 -momit-leaf-frame-pointer -v -dwarf-column-info -debugger-tuning=gdb -resource-dir "C:\\Program Files\\LLVM\\lib\\clang\\5.0.0" -internal-isystem "C:\\Program Files\\LLVM\\lib\\clang\\5.0.0\\include" -internal-isystem "C:\\Program Files\\mingw-w64\\x86_64-7.2.0-posix-seh-rt_v5-rev0\\mingw64\\x86_64-w64-mingw32/sys-root/mingw/include" -internal-isystem "C:\\Program Files\\mingw-w64\\x86_64-7.2.0-posix-seh-rt_v5-rev0\\mingw64\\x86_64-w64-mingw32\\include" -internal-isystem "C:\\Program Files\\mingw-w64\\x86_64-7.2.0-posix-seh-rt_v5-rev0\\mingw64\\include" -fdebug-compilation-dir "C:\\Users\\burito" -ferror-limit 19 -fmessage-length 120 -fno-use-cxa-atexit -fobjc-runtime=gcc -fdiagnostics-show-option -fcolor-diagnostics -o "C:\\Users\\burito\\AppData\\Local\\Temp\\hello-d88ba4.o" -xc hello.c clang -cc1 version 5.0.0 based upon LLVM 5.0.0 default target x86_64-pc-windows-msvc ignoring nonexistent directory "C:\Program Files\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev0\mingw64\x86_64-w64-mingw32/sys-root/mingw/include" #include "..." search starts here: #include <...> search starts here: C:\Program Files\LLVM\lib\clang\5.0.0\include C:\Program Files\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev0\mingw64\x86_64-w64-mingw32\include C:\Program Files\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev0\mingw64\include End of search list. "C:\\Program Files\\mingw-w64\\x86_64-7.2.0-posix-seh-rt_v5-rev0\\mingw64\\bin\\ld.exe" -m i386pep -Bdynamic -o hello.exe "C:\\Program Files\\mingw-w64\\x86_64-7.2.0-posix-seh-rt_v5-rev0\\mingw64\\x86_64-w64-mingw32\\lib\\crt2.o" "C:\\Program Files\\mingw-w64\\x86_64-7.2.0-posix-seh-rt_v5-rev0\\mingw64\\lib\\gcc\\x86_64-w64-mingw32\\7.2.0\\crtbegin.o" "-LC:\\Program Files\\mingw-w64\\x86_64-7.2.0-posix-seh-rt_v5-rev0\\mingw64\\lib\\gcc\\x86_64-w64-mingw32\\7.2.0" "-LC:\\Program Files\\mingw-w64\\x86_64-7.2.0-posix-seh-rt_v5-rev0\\mingw64\\x86_64-w64-mingw32\\lib" "-LC:\\Program Files\\mingw-w64\\x86_64-7.2.0-posix-seh-rt_v5-rev0\\mingw64\\lib" "-LC:\\Program Files\\mingw-w64\\x86_64-7.2.0-posix-seh-rt_v5-rev0\\mingw64\\x86_64-w64-mingw32/sys-root/mingw/lib" "C:\\Users\\burito\\AppData\\Local\\Temp\\hello-d88ba4.o" -lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt "C:\\Program Files\\mingw-w64\\x86_64-7.2.0-posix-seh-rt_v5-rev0\\mingw64\\lib\\gcc\\x86_64-w64-mingw32\\7.2.0\\crtend.o" C:\Users\burito>hello Hello World! C:\Users\burito> 

在安装使用3.7G RC3的MinGW构建的旧版本后,它工作。

你可以注意到版本i686-pc-windows- gnu和i686-pc-windows- msvc的区别。

我想叮当3.9也可以工作,如果他们不打破他们的源代码的东西,如果你自己建立它。 很高兴有最新的3.9与MinGW工作。 尽管我自己试着去建立它,但我太懒惰了。

编辑:也有一些包mingw https://github.com/Alexpux/MINGW-packages ,你可以安装使用MSYS2似乎提供支持铿锵。 有一些与3.8和3.9相关的提交。

希望这会帮助有类似问题的人。