1. wine 介绍
1.1. 历史背景
Wine 项目起始于 1993年,由Bob Amstadt 及Eric Youngdale 发起的,它的根源可以追溯到 90 年代早期出现的用于 UNIX的DOS和Windows 模拟器。最开始是MIT的一个实验室项目,后来改为GPL授权。
Wine 项目最初是将 16位的应用程序移植到 Linux,而几年之后,已可以在 Linux上运行 Microsoft Word 和 Excel。现在它有一百多万行代码。
人们一直认为,在桌面上采用 Linux 的主要障碍是应用程序不足。商用桌面应用程序供应商还不能确定他们是否应该投入时间和精力将他们的 Windows 应用程序移植到 Linux,他们基本上是在等待 Linux 大规模应用于桌面。另一方面,Linux 需要应用程序才能大规模应用于桌面。这是一个经典的先有鸡还是先有蛋的问题,而 Wine 通过在 Linux 上运行现有的 Windows 应用程序而解决了这一问题。
1.2. wine 是什么
Wine 项目实际是一个二合一的项目。它们提供了一个名字叫做 Winelib的开发工具包,用于将应用程序从 Windows 移植到 Linux(和 Unix);它们还提供了一个程序加载器,让 Windows 二进制文件可以在 Unix 和类 Unix 系统中运行。本文讨论的主要是后者。
Wine 程序加载器让运行于 x86 上的 Linux 和其他类 Unix 操作系统可以加载并运行 Windows x86 可执行文件,不过那只是它要解决的问题的一部分。因为 Windows 可执行文件总是会链接到其他的库,而这些库是 Windows 操作系统的一部分,Wine 还最大可能限度地实现了那些 Windows 内部构件,即 Linux 上通常所指的 Win32 API。
虽然 Windows 和 Linux 有很大的不同,但是就基本的层次而言,与任何现代操作系统一样,还是有很多类似之处的 -- 比较明显的包括,对文件和目录的支持,对同时运行多个程序的支持,类似的用户界面以及对多媒体的支持。
1.3. 支持的功能
Windows 可执行文件:
Wine 完全支持 Windows 可执行文件( .exe 和 DLL)的二进制加载。
DLL :
Wine 有几百个 Windows DLL 的内部实现 -- 不过,其中没有多少是完全的实现。例如,包含有用户界面相关函数的 userd32.dll 在开放源代码的 Wine 中实现了 92%。
COM :
这是一种几乎被所有的大型 Windows 应用程序所使用的 Windows 技术,它支持诸如将一个 Excel 电子数据表嵌入到 Word 文档中等功能。这一技术得到了 Wine 的很好的支持。
注册表:
这是另一个几乎任何一个 Windows 应用程序都会使用的关键技术,Wine 实现了大约 90% 的 Windows 注册表管理 API。
核心功能:
核心系统功能也得到了特别好的支持。如前面提到的,尽管 Linux 和 Windows 之间存在区别,但是基本的层次上还有很多类似之处,因此与进程、线程、文件和消息队列相关的核心系统 API 得到了近乎完美的支持。
音频和视频:
Wine 支持 Windows 音频和视频文件的运行(还可以使用 Wi