MinGW
Minimalist GNU for Windows,前身为mingw32,是一个免费开源的软件开发环境,从2010年开始项目停止并不再使用。后续提供MinGW-w64。
MinGW包括:
- 移植到Windows上的GNU编译器集(GCC),包括C、C++、ADA和Fortran编译器。
- 适用于Windows的GNU Binutils(汇编器、链接器、归档管理器 / assembler, linker, archive manager)
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。它试图尽可能做到最简最少最小(因此而得名)。
MinGW并不试图在Windows之上提供一个完整的POSIX层,它也不要求你与一个特殊的兼容库链接(如上所说,只使用了Windows系统自带的库,并不依赖于任何第三方C-Runtime DLLs)。
Cygwin is a POSIX emulation layer, while MinGW provides functions supplied by the Win32 API. MinGW-w64 is a fork of MinGW that supports 64-bit Windows.
MinGW-w64
https://www.mingw-w64.org/
Mingw-w64 is an advancement of the original mingw.org project, created to support the GCC compiler on Windows systems. It has forked it in 2007 in order to provide support for 64 bits and new APIs. It has since then gained widespread use and distribution.
Mingw-w64是原mingw.org项目的一个进化版,用于在Windows系统上支持GCC编译器。它在2007年从原MinGW分支出来,以提供对64位和新的API的支持。此后,它获得了广泛的使用和传播。
较新的MinGW-w64带有大约99%完整的Windows API绑定(不包括ATL等),包括x64支持和实验性ARM实现。你可能偶尔会发现一些奇特的常量未被定义,但对于99%的人在99%的时间内使用的东西,它工作得非常好。
https://sourceforge.net/projects/mingw/
MinGW: A native Windows port of the GNU Compiler Collection (GCC), with freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All of MinGW's software will execute on the 64bit Windows platforms.
Downloads - MinGW-w64
https://www.mingw-w64.org/downloads/
选择MinGW-W64-builds,这个是纯Windows平台使用的。其他的很多就是其他平台下使用MinGW-w64,是交叉编译了,比如在Ubuntu下使用MinGW,编译出可以在Windows下执行的程序。
再比如,Cygwin里,MinGW作为一个包,可以安装。装完后,就可以使用MinGW作为交叉编译器,编出在Windows下运行的exe文件了。
下载地址:https://github.com/niXman/mingw-builds-binaries/releases
关于MinGW,可选Architecture : i686和x86_64,可选Threads Model种类:posix、win32和MCF,可选Exception:seh和silj,第二个之前版本有,现在没了。
可选的C运行库:msvcrt和ucrt。
i686平台下,只有dwarf一种选中,是一种调试信息文件格式。
14.2是gcc的版本,v12-rev0是MinGW-w64的发布版本。
下载压缩文件后,解压缩到合适路径。
MinGW目录下的bin路径,要加入到系统环境变量中,在System variables的Path中。
然后打开命令行,就可以执行gcc --version了。
使用gcc编译C代码,就会得到可执行的exe文件。
在Windows下使用MinGW的好处,方便了在Linux下用惯了GCC套件的开发者,并跟随GCC版本更新。如前面可选的MinGW版本所列,MinGW编译器既可以使用Windows API编程,也可以使用POSIX编程。
MinGW-w64
MinGW is an abbreviation of Minimalist GNU for Windows. The idea of MinGW is to provide a development platform for building cross-platform applications on Windows. The important pieces are:
* a set of FOSS Windows specific header files and import libraries which enable the use of the Windows API,
* a supplementary library and a runtime that fill in some gaps.
... but the term generally encompasses the cross-platform GNU development tools:
* GNU Compiler Collection (GCC),
* GNU Binutils (assembler, linker, archive manager),
* GNU Debugger (GDB),
* and miscellaneous utilities.
There are at least two projects implementing this idea:
* the original MinGW project, sometimes referred to as mingw.org
* and the MinGW-w64 project.
The MinGW-w64 project itself doesn't aim to be a software distribution. There are multiple builds of mingw-w64 toolchains and multiple software distributions built using MinGW-w64.
参考:
MSYS2 History - MSYS2