【问题标题】:Differences between MSYS2 and Cygwin [closed]MSYS2 和 Cygwin 之间的差异 [关闭]
【发布时间】:2014-11-03 06:47:21
【问题描述】:

传统上,MSYS bash 被认为不如 Cygwin bash。 前者是 MinGW 中用于运行 autoconf 脚本的辅助工具。 但现在有 MinGW-w64 和 MSYS2。后者附带了一个像包管理器这样甜美的 pacman 和像 zsh 这样的优雅 shell,所以我想知道在仿真层中是否还有差距。

虽然 MinGW* 应用程序是 Windows 本机可执行文件,但 MSYS2 软件需要 POSIX 仿真层,就像 Cygwin 一样。至少对于普通用户来说,很难发现两者之间的差异。

  • 两个仿真层(如果有)之间的功能差异是什么?
  • 哪种仿真更快(更高效)?

【问题讨论】:

  • 如果没有意见,你在寻找什么样的好处?
  • @Scimonster 我正在寻找可以使两个项目之一更符合 POSIX 而不是个人使用经验的技术和实施细节:例如项目 x 是否基于cygwin.dll 而不是项目 x 使用舒适的 pacman 安装程序。我认为后者只是对你喜欢什么的看法。
  • 很好奇,我认为询问三个分叉与分叉项目有何不同过于宽泛:stackoverflow.com/q/25019057 因为这里提问者自己说:“我愿意接受任何关于改进这个问题的建议。我觉得它可能会更好。”,我只关注提供更多上下文的最新分支(MSYS2)。相反,三叉问题是合法的,而我的似乎不是。
  • 为什么当以下问题被接受时,这个主题被认为过于宽泛? stackoverflow.com/questions/771756/…

标签: bash cygwin msys2


【解决方案1】:

传统上,MSYS bash 一直较差,但主要是因为 Cygwin 仍在积极开发中,而 MSYS 没有。 MSYS 从 Cygwin 版本 1.3.3 派生出来,从不重新同步,而 MSYS2 会定期与 Cygwin 项目重新同步。

我们没有“像 pacman 这样的包管理器”,我们尽可能直接重新编译 Arch Linux 的 pacman 包管理器。

MSYS2 没有 cygwin.dll,但它有 msys-2.0.dll 做同样的事情(还有更多)。具体来说,看起来像路径和 PATH 环境的参数。 var 在运行 Windows 原生软件时转换为 Windows 形式。

至于它是否更慢,我预计差异很小,但由于额外的转换工作,MSYS2 会慢一点。再说一次,您在 MSYS2 中运行的 Windows 本地软件(例如 MinGW-w64 编译器)可能比在 Cygwin 中运行的更多,因此这将使事情重新有利于 MSYS2。

【讨论】:

【解决方案2】:

据我了解,MSYS2 是 Cygwin 的一个分支,主要目标是提供使用 MinGW-w64 软件包的可能性。该目标是以牺牲可用软件的总数为代价来实现的。比较MSYS2Cygwin的列表。

基本上,仅此而已。因此,虽然您不需要在 MinGW-w64 下编译某些东西,但您几乎没有任何理由使用 MSYS2 而不是原始的 Cygwin。

【讨论】:

  • +1 我看到 MSYS2 不包含 cygwin.dll。这是否意味着它的工具更高效?如果我有针对 Linux 的源代码(但假设不使用 X),Cygwin 是否比 MSYS2 更有可能构建它?
  • MSYS2 只是调用cygwin.dll 别的东西。它的工作原理与 Cygwin 相同。与 MSYS2 相比,您的代码更有可能与 Cygwin 一起使用。 MSYS2 实际上并不是要创建 MSYS2 程序,而不是 MSYS2 的一部分。 MSYS2 主要用于使用类 Unix 工具创建 Windows“本机”程序。特别是它旨在运行 GNU autoconf configure 脚本。
  • "虽然您不需要在 MinGW-w64 下编译某些东西,但您几乎没有任何理由使用 MSYS2 而不是原始的 Cygwin。" - 我认为你本末倒置!我们不使用 MSYS2 来使用 MinGW-w64 或其软件包专门。我们使用 MSYS2 通过 GNU 风格的工具编译原生 Windows 程序。 MinGW-w64 作为编译器,在很多方面只是其中的一个实现细节。使用 MSYS2 的原因是它的原生构建系统,而不是它的编译器……当然,那个编译器使这一切成为可能:-)
  • MSYS2 可以从 C++ 编译 Windows Python 扩展。 Cygwin 不能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-23
  • 2010-09-05
  • 2011-06-24
  • 1970-01-01
  • 2015-04-02
  • 2014-08-21
  • 2018-06-28
相关资源
最近更新 更多