为什么我不能在基于Linux的系统上本机运行.exe文件?

为什么我不能在基于Linux的系统上本机运行.exe文件?,linux,windows,linux-kernel,operating-system,linux-mint,Linux,Windows,Linux Kernel,Operating System,Linux Mint,我完全了解Wine和PlayOnLinux等在Linux上使用Windows应用程序的产品,但为什么我无法在Linux上运行.exe文件?是因为Windows操作系统的体系结构中有Linux不使用的东西吗?有没有可能创建一个linux发行版或与现有的Ubuntu、Mint、Debian等一起运行.exe和.deb?如果可能的话,可以研究什么才能做到这一点?可执行文件是一组指令,告诉程序加载器如何将程序放入内存。可执行文件反过来可以引用本质上也是可执行文件的共享库,因此加载过程是递归的 首先,操作

我完全了解Wine和PlayOnLinux等在Linux上使用Windows应用程序的产品,但为什么我无法在Linux上运行.exe文件?是因为Windows操作系统的体系结构中有Linux不使用的东西吗?有没有可能创建一个linux发行版或与现有的Ubuntu、Mint、Debian等一起运行.exe和.deb?如果可能的话,可以研究什么才能做到这一点?

可执行文件是一组指令,告诉程序加载器如何将程序放入内存。可执行文件反过来可以引用本质上也是可执行文件的共享库,因此加载过程是递归的

首先,操作系统程序加载器需要能够理解可执行文件格式。这是Linux加载程序无法做到的

其次,可执行文件引用的任何共享库都必须可用。windoze应用程序中引用的那些库在linux系统上不可用


即使您能够克服前两个障碍,操作系统也需要以相同的方式响应系统服务调用。当您在Windows中调用开放文件系统服务时,linux系统可能会将其解释为关闭文件系统服务调用或英特尔上的任何东西,有多种方式调用系统服务。

我完全了解产品…-然后试着把这种单纯的意识扩展到理解他们的实际行为上。因为很多原因,你无法做到这一点。大多数情况下,由于内核不同,Linux中的exe文件只是一个具有执行权限的文件,因此它们都提供相同的功能,但它们构建在不同的操作系统上。即使是构建在BSD上的东西也无法在Linux和Windows上工作,因为这是不同的二进制表示。你需要什么来克服这个问题?仿真器,或者更好的虚拟机。他们做什么?它们使实际的操作系统内核在不同的系统上工作。此外,像VT-x这样的硬件扩展使这个过程非常高效。