我知道我们可以借助 Wine 来运行 Windows (.exe) 程序。
我想知道 Wine 如何.exe
在 Ubuntu 上工作并运行程序。由于它们是两个不同的操作系统 - Windows(闭源)和 Ubuntu(Linux 开源) - 并且它们的工作方式不同:Ubuntu 基于包管理(例如 apt、dpkg)。
为什么葡萄酒很重要,它意味着什么“Wine 不是一个模拟器”?
据我所知,它会创建目录等。它的工作原理是否与 Windows 类似,并在真正的 Windows 平台~/.wine/drive_c/windows
上使用相同的文件?windows/system32
我想知道它的工作原理和重要性,因为它被投射的原因(需要什么/为什么应该允许) 在 Ubuntu 上运行 Windows 程序?但是它并不完全支持所有 Windows 软件和图形。
那么‘Cross-Over’ 和 ‘Play on Linux’ 等并行软件包又是什么呢?
答案1
正如维基百科所述:http://en.wikipedia.org/wiki/Wine_(软件)
“Wine 是一个兼容层。它通过提供 Windows 程序调用的 DLL 的替代实现来复制 Windows 的功能[4],并替代 Windows NT 内核的进程。“
因此,WINE 是一套内部开发的库,其中一侧(对程序可见)是 Windows API,另一侧(对 Linux 内核和 Linux 库可见,如 glibc 和 libX11)是 POSIX、Linux 和 X11 API。此外,还有 Windows 程序的特殊加载器,它可以读取 EXE 文件,将其和所有需要的 DLL 库加载到内存,将所有内容与内部 Wine 库和系统库连接起来并运行它。WINE 内部还可以有多个辅助程序。
由于存在两种不同的操作系统 Windows(闭源)和 Ubuntu(Linux 开源)
Wine 提供了各种 Windows 系统 DLL 的自身版本。Wine 还能够加载原生 Windows DLL。不支持尝试直接调用 Windows 内核。如果您的 Windows 程序发出 Linux 可以处理的调用,Wine 会将它们传递给 Linux 内核。如果程序想要执行 Linux 无法执行的操作,Wine 会先将调用转换为 Linux 可以处理的操作。
两种操作系统(Windows 和 Ubuntu)都有不同的 API(和 ABI(应用程序二进制接口))。Windows 有 WinAPI,Linux 有 POSIX API,还有一些额外的 Linux 特定 API、图形 API(如 X11)以及自己的 Linux ABI。如果您使用了错误的 API,不同的 API 不会让您打开文件并读取文件。这种差异与包管理无关,而是与程序、库和操作系统内核之间的接口有关。
那么为什么 Wine 如此重要以及“Wine 不是模拟器”是什么意思呢?
模拟器应该加载程序指令,解析它们,并模仿它们的操作。因此,ARM 的模拟器可以在 x86(英特尔)上实现。例如,有很棒的qemu
(名称解码为“Quick EMUlator”),或者用 C 语言编写的旧版 x86 模拟器 -bochs
。模拟器通常模拟整个 PC,从 BIOS、处理器和 HDD 开始,然后启动您在这台虚拟 PC 上安装的操作系统。
WINE 不是模拟器,因为它不解释目标二进制指令或模拟处理器。它只是将程序加载到内存中,并提供从 WinAPI 到主机的 POSIX/Linux API 的 API 转换(以及用于图形和鼠标的 Xlib,以及用于声音的其他一些 API 等)。
为什么计划在 Ubuntu 上运行 Windows 程序(或者需要/为什么应该允许)?
WINE 早在 Ubuntu 创建之前就已开始规划,该项目开始了1993 年 Solaris 推出类似项目之后“侘”. 能够启动在另一个操作系统上运行的应用程序是很有用的,特别是如果这个操作系统被广泛使用,并且有很多专门为其创建的软件(和游戏),而这些软件(和游戏)不能直接从任何其他操作系统(如 Unix、Solaris 或 Linux)启动。
但是它并不完全支持Windows和图形的几个软件。
WINE 无法准确实现所有 WinAPI(其中某些部分未记录)和所有所需库。某些 Windows 程序正在使用未实现的 API 或库,因此它们无法与 WINE 配合使用。
那么 Linux 上的 cross-over、play 等并行包是什么?
交叉是 WINE 的商业版本,具有更好的支持、一些辅助 GUI 工具(可轻松安装一些软件)并且经过验证兼容性列表运行 Windows 程序和游戏。通常,您需要向 CrossOver 的开发者 CodeWeavers 支付一些费用(40 美元),以便长期使用该软件包并获得支持。CodeWeavers(一家小公司)通过向其重新发送所有补丁以及向几位 Wine 开发者支付费用来支持 Wine 项目。根据维基百科:
“CrossOver 由 CodeWeavers 开发,基于开源 Windows 兼容层 Wine。CodeWeavers 修改 Wine 源代码、应用兼容性补丁、添加更人性化的配置工具并提供技术支持。CodeWeavers 雇用了数名 Wine 软件开发人员,并为 Wine 贡献源代码。“