
Table of content0 Preface/Foreword1 MinGW-w641.1 使用MinGW-w64的原因1.2 MinGW-w64使用场景1.3 官网2 GCC LLVM2.1 编译器构成2.2 GCC2.3 LLVM2.3.1 Clang0 Preface/ForewordMInGW全称为MinimalistGNU onWindows.将经典的开源C语言编译器GCC移植到了Windows平台下并且包含了Win32API,因此可以将源代码编译为在Windows中运行的可执行程序。而且还可以使用一些Windows不具备的Linux平台下的开发工具。概括来讲MinGW 是GCC的Windows版本。MinGW-w64与MinGW的区别MinGW只能编译生产32位可执行程序MinGW-w64可以编译成64bit或者32bit可执行程序1 MinGW-w641.1 使用MinGW-w64的原因讲原因我们就可以从它的优势说起开源软件可以免费使用是一个活跃的开源社区在维护不会过时支持最新的C语言标准使用Windows的C语言运行库因此编译出的程序不需要第三方DLL可以直接在Windows下运行流行的IDE本质上是将MinGW-w64进行了封装使得具有良好的GUI简化了操作但是内部的核心还是MinGW-w64是稳定的、可靠的、持续更新的C/C编译器使用可以免去很多麻烦不用担心过时也不用担心编译器本身有bug1.2 MinGW-w64使用场景对于C语言初学者适合用MinGW-w64因为可以知道编译程序的细节相比于VS2015等编译器MinGW-w64属于手动编译而VS2015属于自动编译1.3 官网https://www.mingw-w64.org/2 GCC LLVM2.1 编译器构成传统编译器分为三个部分Frontend前端语义Semantic和语法(Syntax)分析将源代码转换成抽象语法树Abstract Syntax Tree;Optimizer优化器在前端基础上对中间代码进行优化Backend后端将优化后的中间代码转化为针对各自平台的机器代码2.2 GCCGCCGNUCompilerCollection,GNU编译器套装一套由GNU开发的编程语言编译器。GCC原名GNU C语言编译器刚开始只能编译C语言。后来GCC经过扩展可以处理C、Objective-C、Java等其他语言。2.3 LLVMLLVMLow Level Virtual Machine底层虚拟机提供与编译器相关支持能够进行程序语言的编译器优化、链接优化、在线编译优化、代码生成可以作为多种编译器的backend使用。2.3.1 ClangClang是LLVM的frontend只支持C、C和Objective-C三种语言。