c++ - 为什么需要 Cygwin 和 MinGW?

标签 c++ compilation cygwin mingw

我一直试图了解 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-bit64-bit 可执行文件)或 mingw-builds .或者,您可以安装 Cygwin 并使用其 setup.exe 安装 MinGW-w64 交叉编译器并从那里使用它,但如果您不需要近乎完美的 Unix 仿真来构建脚本,我建议您不要这样做。

编辑 您可能知道也可能不知道还有另一种替代方案,即旧的 Interix,它回避了 Win32 子系统并直接构建在 NT 内核之上。这是作为 Windows Services for UnixSubsystem for Unix Applications 提供的(适用于 Windows 7Windows 8older versions of Windows )。此解决方案适用于 Windows Pro/Ultimate 版本的客户,并为您提供最接近您将获得的原生 Unix 支持。哎呀,你甚至可以使用 Visual Studio 来调试你的 Unix 软件:)

关于c++ - 为什么需要 Cygwin 和 MinGW?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16273323/

相关文章:

events - Grails编译事件

ssh - Cygwin:ssh 和 ssh-keygen 根本没有反应

python - 使用 python 与 Cygwin(mintty) 通信(在其中执行命令)并获取输出

c++方法根据字符串返回不同的类型

c++ - 尝试配置 COM 端口时设置 DCB 失败

c - 我的代码块无法编译

windows - 映射 linux 命令 Cygwin

c++ - ACE 宏定义错误

c++ - Slerp 问题,透视变形

c++ - 自动将类定义与声明分开?