MinGW & MinGW-W64介绍

Table of content

0 Preface/Foreword

1 MinGW-w64

1.1 使用MinGW-w64的原因

1.2 MinGW-w64使用场景

1.3 官网

2 GCC & LLVM

2.1 编译器构成

2.2 GCC

2.3 LLVM

2.3.1 Clang


0 Preface/Foreword

MInGW全称为:Minimalist GNU on Windows.将经典的开源C语言编译器GCC移植到了Windows平台下,并且包含了Win32API,因此可以将源代码编译为在Windows中运行的可执行程序。

而且还可以使用一些Windows不具备的,Linux平台下的开发工具。概括来讲:MinGW 是GCC的Windows版本。

MinGW-w64与MinGW的区别:

  • MinGW只能编译生产32位可执行程序;
  • MinGW-w64可以编译成64bit或者32bit可执行程序

1 MinGW-w64

1.1 使用MinGW-w64的原因

讲原因我们就可以从它的优势说起:

  • 开源软件,可以免费使用
  • 是一个活跃的开源社区在维护,不会过时
  • 支持最新的C语言标准
  • 使用Windows的C语言运行库,因此编译出的程序不需要第三方DLL,可以直接在Windows下运行
  • 流行的IDE本质上是将MinGW-w64进行了封装,使得具有良好的GUI,简化了操作,但是内部的核心还是MinGW-w64
  • 是稳定的、可靠的、持续更新的C/C++编译器,使用可以免去很多麻烦,不用担心过时,也不用担心编译器本身有bug

1.2 MinGW-w64使用场景

  • 对于C语言初学者,适合用MinGW-w64,因为可以知道编译程序的细节
  • 相比于VS2015等编译器,MinGW-w64属于手动编译,而VS2015属于自动编译

1.3 官网

https://www.mingw-w64.org/

MinGW & MinGW-W64介绍_第1张图片

MinGW & MinGW-W64介绍_第2张图片

MinGW & MinGW-W64介绍_第3张图片

2 GCC & LLVM

2.1 编译器构成

传统编译器分为三个部分:

  • Frontend,前端:语义(Semantic)和语法(Syntax)分析,将源代码转换成抽象语法树(Abstract Syntax Tree);
  • Optimizer,优化器:在前端基础上,对中间代码进行优化;
  • Backend,后端:将优化后的中间代码转化为针对各自平台的机器代码;

2.2 GCC

GCCGNU Compiler Collection,GNU编译器套装,一套由GNU开发的编程语言编译器。GCC原名GNU C语言编译器,刚开始只能编译C语言。后来GCC经过扩展,可以处理C++、Objective-C、Java等其他语言。

2.3 LLVM

LLVM:Low Level Virtual Machine,底层虚拟机,提供与编译器相关支持,能够进行程序语言的编译器优化、链接优化、在线编译优化、代码生成,可以作为多种编译器的backend使用。

2.3.1 Clang

Clang是LLVM的frontend,只支持C、C++和Objective-C三种语言。        

你可能感兴趣的:(Windows系统相关,MinGW)