2

我知道几个在 linux 和 Windows 之间进行交叉编译的项目。

Wine项目非常适合在 Linux 中运行 Windows 应用程序。

andLinux是在 Windows 内部运行的 linux。

我的问题是,我们能否使用 Windows 编译器(如 mingw32、visual studio 等)编译完整的 linux 操作系统,以获得与 Windows PE 可执行格式完全兼容的 linux 系统?

4

1 回答 1

3

正如 wine 所展示的,PE 格式并不是真正的兼容性问题。

PE 仅定义程序在加载时如何拼凑在一起。在 Windows 下,RUNDLL 对其进行解释,将所有程序部分加载到内存中,将所有支持的 dll 加载到内存中并修补函数指针,以便内存中的程序可以运行。(有关更多详细信息,请参阅http://msdn.microsoft.com/en-us/library/ms809762.aspx它是一本好书!

几乎没有什么可以阻止您编写内核模块来完成所有这些工作。使用上面链接的页面中的详细信息,它可能并不难,并且可能已经有人这样做了。

真正的问题是操作系统的基础。即使linux可以加载PE,文件名(\或/)的根本差异以及不同的权限模型和linux下不存在的windows注册表也会存在问题。那是在您进入不同的 GUI 窗口模型之前。

因此,让 windows 程序在 linux 下运行的任务与程序加载器无关,而更多的是在 Linux 下模拟所有 windows DLL。据我了解,这是葡萄酒的主要核心。

于 2013-07-20T13:20:12.540 回答