如何让 Windows 运行 Linux 可执行文件?

Ter*_*iao 5 windows linux

我在Linux下编译了一个C++程序:

make -f mymakefile
Run Code Online (Sandbox Code Playgroud)

这将生成一个可执行文件,a.out. 此可执行文件似乎无法在 Windows 命令提示符下运行。

Kel*_*ari 95

您不能在 Windows 下本地运行 Linux 程序。它们是完全不同的操作系统。

但是,您可以尝试运行该程序的方法有:

  1. 在 Windows 上重新编译程序以获得本机可执行文件
  2. 安装适用于 LinuxWindows 子系统并在该环境中运行该程序
  3. 虚拟机中安装 Linux并在该环境中运行程序
  4. 安装CygwinMinGW并重新编译并在该环境中运行
  5. 使用交叉编译器

诚然,根据程序的性质及其依赖关系,如果没有额外的软件、对源代码的修改或根本不修改,可能无法在另一个环境中运行。

  • 根据您的看法,在 WSL 下运行是 Windows 下的“本机”,尽管默认情况下未预安装。 (40认同)
  • @Socob 不完全是:WSL 是 NT 内核的一部分。但除此之外,是的,Wine 与您在 Linux 上本地运行 Win32 二进制文件一样接近。 (19认同)
  • @Bob 同样,在 WINE 下运行 Windows 程序是“本机”。 (13认同)
  • @Bob WINE 可以在用户空间中运行并且 WSL 必须具有内核组件的原因是,在 Linux 系统调用是 ABI 的一部分,而在 Windows 上,一切都是通过调用 ntdll.dll 中的函数来虚拟化的 (7认同)

MSa*_*ers 26

您需要适用于 Windows 的 Linux 子系统 (WSL) 和 Linux 发行版。Windows 商店有一些预装了 WSL 的 Linux 发行版。Ubuntu 相当流行,但由于您已经拥有构建的 Linux 系统a.out,因此匹配它可能是最容易的。

如果您无法匹配 Linux 发行版,并且a.out无法按原样运行make,也可以在您的 WSL 发行版上重新运行


xav*_*rat 7

上面的答案涵盖了大部分方面,但不确定是否遇到过flinux(有时称为外来 linux),这恰好也已在此处提出建议并且可能是更简单的解决方法,具体取决于您要实现的目标。

(注意我有 WSL 并且经常使用模拟器和虚拟机,我还没有真正探索其他解决方法:))

国外LINUX是Windows平台的动态二进制翻译器和Linux系统调用接口模拟器。它能够在 Windows 上运行未经修改的 Linux 二进制文件,无需任何驱动程序或对系统进行修改。与 Cygwin 和其他工具相比,这提供了另一种在 Windows 下运行 Linux 应用程序的方法。它现在运行大量控制台应用程序和一些 GUI 应用程序。


Red*_*ick 5

您可以在 Linux 上为 Windows 交叉编译。

/sf/ask/142379821/

这允许您使用 Linux 编译在 Windows 下运行的二进制可执行程序。