Windows下使用GCC套件,并且模拟Unix/Linux的操作环境,一般使用的是MinGW和Cygwin。
让我们来一起认识一下。
MinGW
Minimalist GNU for Windows,前身为mingw32,是一个免费开源的软件开发环境,从2010年开始项目停止并不再使用。
MinGW的用途是什么?
MinGW是一个基于GNU GCC和Binutils项目的编译器系统,它可以将代码编译和链接到Win32(Windows)系统上运行,生成本地微软Windows应用程序。它提供C、C++和Fortran编译器以及其他相关工具。
What is the use of MinGW?
MinGW is a compiler system based on the GNU GCC and Binutils projects that compiles and links code to be run on Win32 (Windows) systems. It provides C, C++ and Fortran compilers plus other related tools.
所以,通俗的说,MinGW就是用你在Linux上习惯的方式来使用GCC在Windows平台上编码并生成可运行的Windows程序。
MinGW是一个在Windows平台上使用的完整的GCC工具链(包括部分前端功能,如C、C++、Ada、Go等编程语言的编译),代码编译和链接过程中使用的是Windows操作系统组件C运行时库msvcrt.dll。它试图尽可能做到最简最少最小(因此而得名)。
这意味着,与Cygwin不同,MinGW并不试图在Windows之上提供一个完整的POSIX层,但另一方面,它也不要求你与一个特殊的兼容库链接(如上所说,只使用了Windows系统自带的库,并不依赖于任何第三方C-Runtime DLLs)。
MinGW包括:
- 移植到Windows上的GNU编译器集(GCC),包括C、C++、ADA和Fortran编译器。
- 适用于Windows的GNU Binutils(汇编器、链接器、归档管理器 / assembler, linker, archive manager)
- 命令行安装程序,包括MS-Windows上部署的MSYS和用来进行配置管理的终端工具(mingw-get)。
mingw-get.exe 是 MingGW(Minimalist GNU for Windows)开源项目中包含的命令行工具,可以在Windows下自动下载和安装C、C++、fortran语言的编译器及编译工具。
在网址: https://sourceforge.net/projects/mingw/files/Installer/ 可以下载 mingw-get-setup.exe,通过运行 mingw-get-setup.exe 可以安装 mingw-get.exe 。
使用 mingw-get install 命令,可以安装以下语言的编译器或相关工具:
gcc, g++, gdb, mingw32-make, fortran。
比如要安装g++编译器:
MinGW-w64
Mingw-w64是原mingw.org项目的一个进化版,用于在Windows系统上支持GCC编译器。它在2007年从原MinGW分支出来,以提供对64位和新的API的支持。此后,它获得了广泛的使用和传播。
较新的MinGW-w64带有大约99%完整的Windows API绑定(不包括ATL等),包括x64支持和实验性ARM实现。你可能偶尔会发现一些奇特的常量未被定义,但对于99%的人在99%的时间内使用的东西,它工作得非常好。
你也可以使用POSIX中的大部分内容,只要它在Windows下以某种形式实现。POSIX中有一个主要特性fork功能,这个在MinGW无法使用,因为在Windows下没有这样的东西(Cygwin花了很大力气来实现它)。
还有一些细微差异,但总的来说,大多数功能是OK的。
MSYS
MSYS是 "Minimal SYStem "的缩写,是一个Bourne Shell命令行解释器系统。作为微软cmd.exe的替代品,它提供了一个通用的命令行环境,特别适合与MinGW一起使用,以便将许多开源应用程序移植到MS-Windows平台上;它是Cygwin-1.3的轻量级分支,包括一小部分Unix工具,来帮助实现开源应用程序移植到Windows上。
MSYS是Cygwin的简化版,和MinGW一样,从2010年开始项目停止并不再使用了。
MSYS2
一个简化的Cygwin,是其一个分支,继承了msys的修改,并与Cygwin的功能保持同步,集成在Pacman(软件包管理器)里。
Cygwin
Cygwin是什么?
它是由很多GNU软件和一些开放源码的工具组成的一个集合,用来在Windows上提供Linux系统的功能。
它包含一个DLL(cygwin1.dll),用来提供大量的POSIX API功能。
Cygwin是一个与POSIX兼容的编程和运行环境,可以在Microsoft Windows上原生运行。在Cygwin下,为类Unix操作系统设计的源代码可以通过最小的修改进行编译和执行。
最初,Cygwin被称为gnuwin32(不要与现在的GnuWin32项目相混淆)。这个名字被改成了Cygwin32,以强调cygnus solutions公司在创建它时的作用。当微软注册了Win32商标后,32被去掉了,直接成为Cygwin。
但Cygwin不是一种在Windows上运行本地Linux应用程序的方法。如果你想让你的应用程序在Windows上运行,你必须基于源码重新编译。
也不是一种使本地Windows应用程序可以使用UNIX功能的方法,如信号、ptys等。
TDM-GCC
https://jmeubank.github.io/tdm-gcc/
DM-GCC是一个用于Windows的编译器套件。
它结合了GCC编译器的最新稳定版本、一些对Windows友好的补丁,以及免费和开源的MinGW.org或MinGW-w64运行时API,以创建一个更轻量级的开源软件,用来替代微软的编译器和Windows平台SDK。
它可以创建32位或64位二进制文件,支持Windows XP及其之后的Windows版本。
它的安装文件只有一个,只需点击几下就能安装OK,当包含的包有新版本时,可以更新。
它包含了命令行工具。如果你想要一个可视化的IDE(文本编辑器、编译器界面、可视化调试器),可以使用Code::Blocks和TDM-GCC集成。
TDM-GCC重新混合和重新发布了由各种上游项目创建和支持的组件。可以在这些项目的论坛上找到更好的技术支持。
* DM-GCC is a compiler suite for Windows.
* It combines the most recent stable release of the GCC compiler, a few patches for Windows-friendliness, and the free and open-source MinGW.org or MinGW-w64 runtime APIs, to create a more lightweight open-source alternative to Microsoft’s compiler and platform SDK.
* It can create 32-bit OR 64-bit binaries, for any version of Windows since Windows XP.
* It has an easy-to-use single-file installer that creates a working installation with just a few clicks, and can update that installation when new packages become available.
* It consists of command-line tools only. If you want a visual IDE (text editor, compiler interface, visual debugger), Code::Blocks integrates well with TDM-GCC.
* TDM-GCC remixes and redistributes components that are created and supported by various upstream projects. You generally will find better support from those projects’ forums, rather than from TDM-GCC.
参考:
https://stackoverflow.com/questions/7790262/a-simple-explanation-of-what-is-mingw