【问题标题】:Difference between GNUWin32 and cygwinGNUWin32 和 cygwin 的区别
【发布时间】:2012-05-29 13:33:33
【问题描述】:

我似乎无法理解两者之间的区别。

似乎其中一个(GNUWin32)是窗口顶部的一层(如MSYS),而
其他(cygwin)是其他东西(?)

这是什么意思?我什么时候会使用其中一个?它们都适合同一件事吗?

我想主要将它用于 git,但想保持我的选择开放,以便学习和做所有事情 *nixy。

还有其他工具吗? msysgit 会更适合这个吗?
是否有任何资源可以详尽地了解所有这些 *nix 平台的差异?

【问题讨论】:

  • 有谁知道Windows 7之后GNUWin32的状态是什么?我在 Windows 10 上。我会发布一个单独的问题,但我敢打赌它会因为不是编程问题而被关闭。

标签: linux cygwin msysgit msys gnuwin32


【解决方案1】:

Cygwin 是一个库,它致力于使 UNIX 程序能够在 Windows 系统上编译和运行,而只需最少的修改或无需修改,以及使用该库编译的一整套打包的 UNIX 工具和应用程序。它几乎是一个完整的 Windows 包装器。它包括一个 X 服务器和大量可以在 Linux 发行版中找到的程序。它非常适合想要在 Windows 中学习或使用 UNIX 命令行的人。

MSYS 主要是使用MinGW 编译器在Windows 系统上构建GNU 样式包(带有configure 等)所必需的UNIX 工具的一个端口。它使用修改后的 Cygwin 库的变体以牺牲一些兼容性来提高效率,并且对 Windows 更友好。

GnuWin32 只是将一些 GNU 工具移植到 Windows 上。与 MSYS 一样,它使用msvcrt.dll,以及一个额外的库来提供一些 UNIX 兼容性功能。它的主要目的似乎是允许 Windows 程序和批处理文件直接使用某些 GNU 程序和库。

在大多数情况下,它们都提供 Windows 上的 UNIX 程序,但也有许多细微的差别,包括:

  • 意图。 Cygwin 适用于希望在其 Windows 操作系统上使用 UNIX 的人。 MSYS 适用于想要使用 GNU/UNIX 构建工具构建 Windows 程序的人。 GnuWin32 是将单个 GNU 程序和库移植到 Windows 的端口。
  • 文本文件,尤其是行尾。 Cygwin 允许您使用 CR/LF 或 LF。 MSYS 期望 LF 行结束。 GnuWin32 程序需要 CR/LF 行结尾。
  • 提供的程序。特别是 Cygwin 有更多的包,而 GnuWin32 不提供任何 shell。

至于 git,它在 Cygwin 中可用——这个版本可以在 Windows 目录中使用(可在/cygdrive 下访问)。另外,如前所述,还有msysgit

【讨论】:

  • 关于 MSYS 是不正确的。 MSYS 程序基于 MSYS DLL,它是 Cygwin DLL 的一个分支,并且使用特殊的 MSYS 工具链而不是 MinGW 工具链构建。然而,MSYS 的目的是为使用 MinGW 工具链构建本地 Windows 程序提供一个类 Unix 环境。
  • 很棒的答案! Gow 是如何影响的?
  • 不知道,没用过。随意在 ansewr 中提及它。
  • @ak2 答案已修正。从来没有仔细检查过 MSYS 使用的库,感谢您提供的信息。
  • 多年来我一直喜欢并使用 cygwin,但也必须提防某些陷阱。一个例子:我安装了 cygwin 并安装了地球下的所有东西,包括它的 git。 cygwin 在我的用户路径中。然后我安装了 ruby​​(Windows 安装程序),而不是来自 cygwin(甚至不知道它是否在那里可用)。但是当 ruby​​ 尝试从 cygwin 安装 git 时,事情在路径级别出现了问题。 Rubys 和 cygwins 路径处理不能一起工作。解决方案?从用户路径中删除 cygwin,使用 msysgit 安装并更仔细地观察我的用户搜索路径中的内容。
【解决方案2】:

迈克尔·斯莱德是正确的。我想谈谈典型的使用环境。

出于实际原因,我将 gnuwin 用作仅与 POSIX 环境远程相关的东西的轻量级后端,而 cygwin 更像是一个成熟的 POSIX,甚至是一个非常 gunixish 的环境。

此外,gnuwin 在安装大量工具时往往会变得臃肿,因为可执行文件通常使用静态链接库。另一方面,Cygwin 提供了大量的动态库和相当小的可执行文件。因此,如果您只需要几个可执行文件,那么 gnuwin 需要的资源更少。如果你需要一个复杂的环境,那么 cygwin 会更高效。

gnuwin 也经常有点过时,提供的软件很少,没有包/更新管理器。这是一个基本的shell环境。没有 ssh,没有 gcc,vim,没有 perl,没有 sql——你可以从其他来源获得这些,但它们如何合作很难预测。 Cygwin 修复了以上所有问题。

换句话说,gnuwin 非常适合偶尔安装,只需将 du、find 和 sort 放入 $PATH。使用 cygwin 做一些真正的 POSIX 工作。

我曾经有第二个 Linux 工作站,然后在我的 Windows 系统旁边运行了一个 Linux VM。 Cygwin 使它们过时了。与专用计算机或虚拟机相比,它可以处理大量事情,同时节省大量资源。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    • 2011-02-28
    • 2013-08-07
    相关资源
    最近更新 更多