【问题标题】:How to convert a linux executable file (binary) to windows exe file?如何将 linux 可执行文件(二进制)转换为 windows exe 文件?
【发布时间】:2020-12-17 18:58:25
【问题描述】:

有什么方法可以将 Linux 二进制文件转换为 windows exe 文件?例如,如果在 Linux 中创建一个非常简单的二进制文件,如下所示:

echo "main(){int i; i=i+1;}" >> main.c

gcc main.c -o main

有什么方法可以将主二进制文件转换为windows exe文件?

【问题讨论】:

  • 虽然在技术上是可行的,但会非常复杂,头文件发生变化,更改所有动态链接库等。您有什么要求?
  • 非常感谢,我知道这不太容易,但假设我们有一个简单的二进制文件,如我上面提到的“main”,我怎样才能将它转换为 windows exe 文件?
  • @Mojtaba 在你的位置,我寻找了一个运行时二进制模拟器,并尝试将它与 linux 二进制文件静态链接。这将是缓慢而肮脏的,但这是您可以通过尽可能少的开发工作得到您想要的东西的方法。

标签: linux windows binary


【解决方案1】:

您不能将 linux 可执行文件转换为 windows 可执行文件。 但是你可以用交叉编译器编译源代码。

例如:MinGw32

如果你在 ubuntu 中:

sudo apt-get install mingw32
i586-mingw32msvc-cc main.c -o main.exe

【讨论】:

  • 非常感谢,我知道这不太容易,但假设我们有一个简单的二进制文件,如“main”,因为我提到了如何将 tis 转换为 exe 文件
  • 如果你只有一个linux可执行文件,没有机会访问那个二进制文件的源代码,你只能在windows中使用cygwin来执行程序。由于编译器将系统调用(如控制台输出)绑定到编译程序的系统,因此无法进行转换。在您的情况下,该程序是在 linux 中编译的,因此 mashinecode 调用 linux 系统调用。您没有机会将其转换为 windows exe
  • Cygwin 在 windows mashine 上模拟 linux 环境,它不会转换二进制文件。 Cygwin 在沙箱中启动二进制文件,以便程序可以找到系统调用所需的库和“端点”。
  • 如果您有一些非常简单的程序(例如 'int main() { return 0; }'),那么仅从二进制文件移植是否可行?
  • @Kevin 不,直接对话是不可能的。也许您可以尝试在源语言中反编译可执行文件并在目标平台上重新编译。我不知道这是否有效。
【解决方案2】:

没有办法转换二进制。

常规方法是:

  • 为其他平台重新编译,但这需要源(源中的跨平台支持或使用的库也必须在其他平台上可用)。例如,cygwin/mingw 可以帮助提供所需的支持/库。

  • wine 可用于在 Linux 上运行 Windows 二进制文件(但不能反过来)

【讨论】:

  • 非常感谢,我知道这种转换不太容易;
  • @veger Cygwin 无法运行 Linux 二进制文件——请参阅它的 home page:“Cygwin 不是:一种在 Windows 上运行本机 Linux 应用程序的方法。如果需要,您必须从源代码重新构建应用程序在 Windows 上运行。”
  • @PengBai 你说的对,我更新了答案。
【解决方案3】:

如果您拥有最新的 windows 10。只需在应用商店中安装 linux 子系统即可。你可以在 Windows 中运行任何你想要的 linux 二进制文件

【讨论】:

    【解决方案4】:

    如果您需要在 linux/mac/windows 下在另一个操作系统下运行您的代码/应用程序/程序(linux to win 或 reverse exc..),但您不想使用虚拟机或 wsl 系统,您可以使用 docker .这是链接:https://www.docker.com 但是你需要先学习。 什么是 Docker? Docker 在概念上与虚拟机相似,只是它更轻量级。 Docker 不是运行一个完整的独立操作系统(这是一个巨大的开销),而是运行容器,这些容器使用相同的主机操作系统,并且只在软件级别进行虚拟化

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多