我一直试图了解 Cygwin 和 MinGW 到底是什么,但发现它非常令人困惑。如果你想用 C++ 编程,难道你只需要一个 C++ 编译器吗?从我读到的内容看来,他们似乎努力在 Windows 上提供类似 Unix 的操作系统,但我看不出这有什么意义。我的意思是 C++ 不能在 Windows 上本地编译有什么原因吗?我还读到它们包含库,这是因为 C++ 核心语言不支持很多功能所以非常常见的库,例如 math.h
附带它?
最佳答案
这个解释肯定已经写在别处了,但无论如何……
Cygwin 是基于 Win32 API 构建的 POSIX 兼容运行时。它提供了一个很大程度上兼容 POSIX C 库,并且围绕它,有一种带有包管理器的“Cygwin Distro”,允许您安装大量移植到在 Cygwin 下运行的 Unix 程序。其中包括 Unix shell、GCC(用于 Cygwin)、X、一堆交叉编译器等......
MinGW(-w64) 是提供免费(如在公共(public)领域)Win32 头文件和库的项目。您可以将其视为 Windows SDK(旧)中 header 和库的免费替代品。这些可以与 GCC 结合使用。项目和其他第三方都为 Windows 提供原生 GCC 构建,根本不需要 Cygwin。这些包可以被视为 Windows SDK 的“完整”(在 MinGW(-w64) 的完整性范围内)替代品。
请注意,Cygwin 还为 Win32 交叉编译器提供 Cygwin:它们在 Cygwin 平台上运行,但生成 native Win32 可执行文件。
另一个播放器 MSYS 是 Cygwin 的轻量级分支,它只提供了在 Windows 上运行 autotools 构建脚本的最少量工具。 MSYS 必须与 native MinGW(-w64) 工具结合使用,它不是 Cygwin,您无法轻松扩展 MSYS。
所以“MinGW(-w64)”通常指的是整个 Free Windows GNU 工具链( native 或在 Cygwin 之上运行的交叉编译器),尽管严格来说它只是头文件和库。
要使用 GCC 的 C++ 编译器,我建议您使用我的软件包(创建 32-bit 和 64-bit 可执行文件)或 mingw-builds .或者,您可以安装 Cygwin 并使用其 setup.exe 安装 MinGW-w64 交叉编译器并从那里使用它,但如果您不需要近乎完美的 Unix 仿真来构建脚本,我建议您不要这样做。
编辑 您可能知道也可能不知道还有另一种替代方案,即旧的 Interix,它回避了 Win32 子系统并直接构建在 NT 内核之上。这是作为 Windows Services for Unix
或 Subsystem for Unix Applications
提供的(适用于 Windows 7 和 Windows 8 和 older versions of Windows )。此解决方案适用于 Windows Pro/Ultimate 版本的客户,并为您提供最接近您将获得的原生 Unix 支持。哎呀,你甚至可以使用 Visual Studio 来调试你的 Unix 软件:)
关于c++ - 为什么需要 Cygwin 和 MinGW?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16273323/