Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将linux可执行文件(二进制)转换为windows exe文件?_Linux_Windows_Binary - Fatal编程技术网

如何将linux可执行文件(二进制)转换为windows exe文件?

如何将linux可执行文件(二进制)转换为windows exe文件?,linux,windows,binary,Linux,Windows,Binary,有没有办法将Linux二进制文件转换为windows exe文件?例如,如果在Linux中创建一个非常简单的二进制文件,如下所示: echo "main(){int i; i=i+1;}" >> main.c gcc main.c -o main 有没有办法将主二进制文件转换为windows exe文件?没有办法转换二进制文件 通常的做法是: 为其他平台重新编译,但这需要源代码(源代码或所用库中的跨平台支持也必须在其他平台上可用)cygwin/mingw,可以帮助提供所需的支持

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

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

gcc main.c -o main

有没有办法将主二进制文件转换为windows exe文件?

没有办法转换二进制文件

通常的做法是:

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

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


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

例如:

如果您在ubuntu中:

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

如果你有最新的windows 10。只需在appstore中安装linux子系统。如果您需要在另一个操作系统下的linux/mac/windows中运行代码/应用程序/程序(linux以赢得或逆转exc…),但您不想使用虚拟机或wsl系统,您可以使用docker。以下是链接: 但你首先需要学习。 什么是Docker?
Docker在概念上与虚拟机类似,只是它要轻得多。Docker没有运行整个单独的操作系统(这是一个巨大的开销),而是运行容器,容器使用相同的主机操作系统,并且只在软件级别进行虚拟化,更改所有动态链接库等。您的要求是什么?非常感谢,我知道这不太容易,但假设我们有一个简单的二进制文件,如我上面提到的“main”,如何将其转换为windows exe文件?@Mojtaba在您的位置我找了一个运行时二进制仿真器,并尝试将其与linux二进制文件静态链接。这将是缓慢和肮脏的,但这是如何你可以得到你想要的与尽可能小的开发工作@veger Cygwin无法运行Linux二进制文件——请参阅其:“Cygwin不是:在Windows上运行本机Linux应用程序的一种方式。如果您希望应用程序在Windows上运行,则必须从源代码重新构建它。”@PengBai您完全正确,我更新了答案。非常感谢,我知道这并不容易,但假设我们有一个简单的二进制文件,如“main”如前所述,如果您只有一个linux可执行文件,并且没有机会访问该二进制文件的源代码,那么如何将tis转换为exe文件?您只能在windows中使用cygwin来执行该程序。由于编译器将系统调用(如consoleoutput)绑定到编译程序的系统,因此无法进行转换。在您的例子中,程序是在linux中编译的,因此mashinecode调用linux系统调用。您没有机会将其转换为windows ExecyWin在windows mashine上模拟linux环境,它不会转换二进制文件。Cygwin在沙箱中启动二进制文件,以便程序可以找到系统调用所需的库和“端点”。如果您有一些非常简单的程序(例如“int main(){return 0;}”),仅从二进制文件进行移植是否可行?@Kevin不,直接对话是不可能的。也许您可以尝试用源语言反编译excecutable,然后在目标平台上重新编译它。我不知道这是否有效。