为什么 Cygwin 需要重新编译应用程序而 Wine 不需要?

为什么 Cygwin 需要重新编译应用程序而 Wine 不需要?

赛格威葡萄酒两者都是兼容层。一个是在 Windows 上实现 POSIX,另一个是在 *nix 上实现 Windows API。为什么使用 Cygwin 运行二进制文件需要重新编译,而使用 Wine 运行 Windows 应用程序则无需重新编译?

答案1

因为Windows(尽管版本不同)在一个平台(x86)上,但有无数的 *nix(SysV、BSD、Linux、Dec 等)乘以它们的平台,乘以它们支持的 CPU。

由于这种多样性,在 *nix 上共享代码始终是共享源代码。

答案2

除了“它们不同”之外,这个问题真的没有好的答案。理论上,可以为 *nix 生成一个类似 Cygwin 的层,使您可以在 *nix 上重新编译 Windows 应用程序,也可以为 Windows 生成一个类似 Wine 的层,使您可以在不重新编译的情况下运行 *nix 应用程序 - 但人们并没有这样做。

答案3

Cygwin 提供了在具有特殊架构的计算机上运行 Linux 的环境,是计算机的模拟器。另一方面,Wine 提供了一个环境,其中通过库将 Windows 指令转换为 Linux 指令。Windows 只能在 x86 或 x64(现在也包括 ARM)上运行,而 Linux 可以在多个平台上运行。

相关内容