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

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

我整理了一个C++Linux下的程序:

make -f mymakefile

这将生成一个可执行文件a.out。看来这个可执行文件不能在 Windows 命令提示符中运行。

答案1

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

但是,您可以尝试使用以下方法来运行该程序:

  1. 在 Windows 上重新编译程序可获得本国的可执行文件
  2. 安装适用于 Linux 的 Windows 子系统并在该环境中运行该程序
  3. 在中安装 Linux虚拟机并在该环境中运行该程序
  4. 安装赛格威或者明网并在该环境中重新编译和运行
  5. 用一个交叉编译器

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

答案2

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

如果你无法匹配 Linux 发行版,并且无法正常工作,也可以在 WSL 发行版上a.out重新运行make

答案3

上面的答案涵盖了大部分方面,但不确定是否遇到过linux系统(有时称为外国 Linux),碰巧也被建议这里并且根据您要实现的目标,这可能是一种更简单的解决方法。

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

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

答案4

另一个选项类似于运行虚拟机,但不完全相同,那就是从 Docker 容器运行应用程序。

是的,Windows 版 Docker 在后台使用 VM(HyperV 上的 MobyLinuxVM),但您可以执行以下操作:

$ docker run a.out

并将自行停止容器。它还将使用更少的资源,并且可以从 Windows 自己的终端(如 cmd 和 PowerShell)读取输出。

这种情况的 dockerfile 看起来像这样:

FROM docker pull ubuntu:latest

RUN make -f mymakefile

我个人认为这是在 Windows 中运行 Linux 应用程序的最佳解决方案

相关内容