头图

Windows 环境下 git 客户端中的 git-bash 和 MINGW64

我们在 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 上运行的软件。

更多Jerry的原创文章,尽在:"汪子熙":


Jerry Wang的SAP技术专栏
SAP成都研究院开发专家,SAP社区导师,SAP中国技术大使
914 声望
1.6k 粉丝
0 条评论
推荐阅读
线性表的顺序存储和链式存储
在计算机科学中,线性表是一种常见的数据结构,用于存储一组具有顺序关系的元素。线性表中的元素之间存在一对一的前驱和后继关系,每个元素都有唯一的前驱和后继(除了首元素和末元素)。线性表可以通过顺序存储...

JerryWang_汪子熙阅读 114

封面图
git 常用命令 记录
有错误和改进的地方望留言,谢谢 : )顺便推荐一下,git入门教程Git 教程图解 GitPro Git 2(中文版)Git 使用Git 使用规范流程Git 工作流程Commit message 和 Change log 编写指南全局设置git config --system //...

Luff阅读 3.2k

引入钉钉机器人通知 Gitlab CI/CD 的构建状态
本篇是之前写的《利用 Gitlab CI/CD 实现自动构建,自动部署》的续篇。我们知道 Gitlab 的 Pipeline 中的 Job 执行成功或者失败之后,对应 Job 状态会改变为 passedorfailed,当 Job 的状态改变之后, 我们需要再...

陆同学1阅读 4.6k

封面图
git/pip/easy_install/apt代理/源设置
在公司内网环境中,访问公网往往需要经过公司的代理,对于浏览器、IDE等开发工具,都提供了设置代理的配置,而git、pip、easy_install等CLI工具,则需要通过命令或配置文件进行代理设置;对于Python、Ubuntu、Mav...

乘着风1阅读 5.5k

低代码开发重要工具:jvs-logic(逻辑引擎)2.1.6版本功能清单
逻辑引擎是一种能够处理逻辑表达式的程序,它能够根据用户输入的表达式计算出表达式的值。在实际应用中,逻辑引擎通常被用于处理规则引擎、决策系统、业务规则配置等领域,具有广泛的应用前景。前面几期我们了解...

软件部长2阅读 443

被吐槽 GitHub仓 库太大,直接 600M 瘦身到 6M,这下舒服了
忙里偷闲学习了点技术写了点demo代码,打算提交到我那 2000Star 的Github仓库上,居然发现有5个Issues,最近的一条日期已经是2022/8/1了,以前我还真没留意过这些,我这人懒得很,本地代码提交成功基本就不管了。

程序员小富2阅读 1.4k评论 1

书写友好的提交信息
其中开头部分表明了本次提交的类型(是添加功能还是修复错误等),范围则描述了修改的影响面,然后是一段简要的描述,更多详细的信息则可以在正文中进行描述。

Kisstar阅读 3k

914 声望
1.6k 粉丝
宣传栏