我们在 Windows10 操作系统下,安装了 git 客户端之后,可以通过 git-bash.exe 打开一个 shell:
执行一些 linux 系统里的命令:
注意到上图紫色的 MINGW64.
Mingw-w64 是原始 mingw.org 项目的改进版,旨在支持 Windows 系统上的 GCC 编译器。 它在 2007 年对它进行了分叉,以提供对 64 位和新 API 的支持。 从那时起,它得到了广泛的使用和分发。
而所谓 MinGW(“Minimalist GNU for Windows”),原名 mingw32,是一个免费的开源软件开发环境,用于创建 Microsoft Windows 应用程序。 2005 年至 2008 年创建了一个名为 Mingw-w64 的替代项目,作为 MinGW 项目的一个发展分叉。
MinGW 包括 GNU 编译器集合 (GCC) 的一个端口、用于 Windows 的 GNU Binutils(汇编器、链接器、存档管理器)、一组可自由分发的 Windows 特定头文件和静态导入库,这些库支持使用 Windows API、Windows GNU 项目的 GNU 调试器和其他实用程序的本机构建。
MinGW 不依赖第三方 C 运行时动态链接库 (DLL) 文件,并且由于运行时库不是使用 GNU 通用公共许可证 (GPL) 分发的,因此无需随生成的程序分发源代码, 除非在程序的其他地方使用了 GPL 库。
MinGW 既可以在本地 Microsoft Windows 平台上运行,也可以在 Linux(或其他 Unix)上交叉托管,或者在 Cygwin 上“跨本地”运行。尽管在 MinGW 下生成的程序是 32 位可执行文件,但它们可以在 32 位和 64 位版本的 Windows 中使用。
同 cygwin 的比较
尽管 Cygwin 和 MinGW 都可用于将 Unix 软件移植到 Windows,但它们有不同的方法:
- Cygwin 旨在提供一个完整的 POSIX 层,包括所有主要 Unix 系统调用和库的完整实现。兼容性被认为比性能更重要。
- 另一方面,MinGW 的优先事项是简单性和性能。因此,它不提供某些无法使用 Windows API 轻松实现的 POSIX API,例如 fork()、mmap() 和 ioctl()。
使用本身已移植到 MinGW 的跨平台库编写的应用程序,例如 SDL、wxWidgets、Qt 或 GTK,在 MinGW 中编译通常会像在 Cygwin 中一样容易。
用 Cygwin 编写的 Windows 程序运行在一个 Copyleft 兼容 DLL 之上,该 DLL 必须与程序一起分发,以及程序的源代码。 MinGW 不需要兼容层,因为基于 MinGW 的程序是通过直接调用 Windows API 编译的。
MinGW 和 MSYS 的组合提供了一个小型、自包含的环境,可以将其加载到可移动媒体上,而无需在注册表或计算机上的文件中留下条目。
也可以在 POSIX 系统下用 MinGW-GCC 交叉编译 Windows 应用程序。这意味着开发人员不需要安装带有 MSYS 的 Windows 来编译在带有或不带有 Cygwin 的 Windows 上运行的软件。