【问题标题】:Why am I not able to run .exe files natively on Linux-based systems?为什么我无法在基于 Linux 的系统上本地运行 .exe 文件?
【发布时间】:2017-02-16 20:28:50
【问题描述】:

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

【问题讨论】:

  • “我完全了解产品...” -- 然后尝试将这种单纯的“意识”扩展到了解他们实际所做的事情。
  • 你不能有很多原因。由于内核不同,Linux 中的exe 文件只是一个具有执行权限的文件,所以是的,它们都提供相同的功能,但它们构建在不同的操作系统上。即使是基于 BSD 构建的东西也不能在 Linux 和 Windows 上运行,不同的二进制表示。你需要什么来克服这个?模拟器,甚至更好的虚拟机。他们做什么 ?它们使实际的操作系统内核在不同的系统上工作。像 VT-x 这样的硬件扩展也使这个过程非常高效。

标签: linux windows linux-kernel operating-system linux-mint


【解决方案1】:

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

首先,操作系统程序加载器需要能够理解可执行文件格式。这一点,Linux 加载程序不会这样做。

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

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

【讨论】:

    猜你喜欢
    • 2012-04-13
    • 1970-01-01
    • 2023-02-12
    • 2021-08-15
    • 1970-01-01
    • 2023-03-30
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多