1. 程式人生 > 其它 >Windows 環境下 git 客戶端中的 git-bash 和 MINGW64

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的原創文章,盡在:"汪子熙":