【问题标题】:Why does Mingw exist?Mingw为什么存在?
【发布时间】:2009-08-17 10:21:31
【问题描述】:

MSYS 和类 UNIX 构建系统分开; Mingw为什么存在?我的意思是,为什么 win32/64 不只是“香草 GCC”中可用的另一个目标?这有技术原因还是“政治”?在我看来,Windows 平台并没有什么特别之处可以使 GCC 移植到它与原始 GCC“不兼容”。

【问题讨论】:

  • 多么现实的问题。也许这就是为什么所有那些用餐的哲学家总是四处奔波的原因。

标签: gcc mingw


【解决方案1】:

Mingw 不仅仅是编译器 - 它也是库和头文件(以及您可能需要的任何其他支持文件)。

GCC 只是一个编译器。 Mingw 是一个完整的环境。

【讨论】:

  • GCC 是编译器的集合。
  • 这是否意味着我可以下载 GCC 源代码,编译针对 win32/64 的编译器并用它编译代码(除了没有库和头文件)?
  • 你可以构建一个编译器来创建 PE 文件,所以你真正缺少的只是库和头文件,以便能够用它做任何有用的事情。你也会错过像 CRT0 这样的东西。
【解决方案2】:

MingW 旨在允许将 Posix 应用程序轻松移植到 Windows。它只是一个比 CygWin 更“薄”的层,所以不是所有的东西都可以在窗口太不同的地方工作。 CygWin 允许提供足够的绝缘性,甚至可以运行构建和生成代码的脚本工具。

编辑: 微软非常喜欢制定自己的标准,并希望在已经存在开放标准的事物上打上自己的品牌。即 OpenGL -> DirectX,Java -> .net,OpenCL 是他们想要摒弃的下一个标准。这让他们对于非赞助项目来支持他们作为目标有点痛苦。他们总是拒绝任何允许轻松跨平台开发的东西,因为他们只希望您为那里的操作系统开发应用程序。这是一种营销策略,控制品牌,控制平台,让人们支持其他操作系统变得痛苦。 MingW 是必需的,因为 GCC 可以生成 x86 代码,但即使是最基本的运行时支持也不同于基于 Posix 的操作系统。

【讨论】:

    【解决方案3】:

    好吧,虽然您可以使用交叉编译器从 GCC 生成 win32/64 二进制代码,但必须有人移植所有 C 运行时库。 Mingw 和 Cygwin 都是为此目的而创建的。

    【讨论】:

      【解决方案4】:

      来自 MinGW 的主站点

      以易于安装的二进制包格式提供,用于 MS-Windows 上的本地部署,或从源代码用户构建,用于在 Unix 或 GNU/Linux 上跨主机使用,该套件利用 Microsoft 的标准系统 DLL 来提供 C-运行时和 Windows API。

      【讨论】:

        猜你喜欢
        • 2010-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-24
        • 1970-01-01
        • 2015-08-24
        • 1970-01-01
        相关资源
        最近更新 更多