为什么 Windows EXE 文件不能在 Linux 上运行?

Nav*_*Nav 35 windows linux emulation

Windows 运行可执行文件和 Linux 运行可执行文件的方式有什么不同?为什么他们必须不同?此外,为什么 Linux 可执行文件没有文件扩展名?


不是在如何使 EXE 文件在 Linux 上工作。

我在问为什么它不起作用。

Gil*_*il' 54

Linux 和 Windows 可执行文件使用不同的格式。Linux在大多数架构上使用ELF格式,而 Windows 使用PE格式。ELF 更适合 Linux 管理共享库的方式,PE 更适合 Windows 管理共享库的方式,但没有根本原因 Linux 无法执行 PE 可执行文件或 Windows ELF 可执行文件。事实上,Linux可以通过Wine执行 PE 可执行文件。

难点在于 Windows 和 Linux 具有完全不同的API:它们具有不同的内核接口和库集。因此,要实际运行 Windows 应用程序,Linux 需要模拟应用程序发出的所有 API 调用。这是很多工作。Wine 在一定程度上做到了,但是非常难,尤其是因为 Windows 的制造商不合作。您可以将其与母语为中文时学习英语进行比较:可执行格式是字母表(不难掌握),API 是词汇表(需要数年才能达到可以开始阅读文学的水平) )。

  • “词汇”是一个很好的比喻。 (11认同)

Ign*_*ams 14

Windows 二进制文件与Linux 二进制文件具有不同的ABI,并使用不同的API

Linux 二进制文件不需要扩展名,因为 *nix 使用权限位来标识可执行文件而不是扩展名。