添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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

7 人关注

有什么方法可以将Linux的二进制文件转换成windows的exe文件吗?例如,如果在Linux中创建一个非常简单的二进制文件,像这样。

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

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

3 个评论
Adam
虽然在技术上是可行的,但将是非常复杂的,改变头文件,改变所有动态链接的库等等。你的要求是什么?
非常感谢,我知道这不是很容易,但假设我们有一个简单的二进制文件,如我上面提到的 "main",我怎样才能把它转换成一个windows exe文件?
@Mojtaba 在你的位置上,我找了一个运行时的二进制模拟器,并试图将其与linux二进制静态链接。这将是缓慢和肮脏的,但这是你可以用最小的开发努力得到你想要的东西。
linux
windows
binary
sMojtaba Mar
sMojtaba Mar
发布于 2013-01-18
4 个回答
mstrewe
mstrewe
发布于 2020-12-17
已采纳
0 人赞同

你不能将Linux的可执行文件转换为WINDOWS的可执行文件。 但你可以用交叉编译器来编译源代码。

E.g: MinGw32

如果你是在ubuntu中。

sudo apt-get install mingw32
i586-mingw32msvc-cc main.c -o main.exe
    
我知道这并不容易,但假设我们有一个简单的二进制文件,如我上面提到的 "main",我怎样才能将其转换为exe文件?
如果你只有一个Linux的可执行文件,而没有机会访问该二进制文件的源代码,你只能在windows下使用cygwin来执行该程序。转换是不可能的,因为编译器将系统调用(如控制台输出)与程序编译的系统绑定在一起,在你的例子中,程序是在Linux中编译的,所以mashinecode调用Linux系统调用。
Cygwin在windows系统上模拟了一个linux环境,它并不转换二进制文件。Cygwin在一个沙盒中启动二进制文件,这样程序就可以找到所需的库和系统调用的 "端点"。
如果你有一些非常简单的程序(如'int main() { return 0; }'),仅仅从二进制文件中移植是否可行?
@Kevin 不,直接对话是不可能的。也许你可以尝试用源语言反编译可执行文件,然后在你的目标平台上重新编译它。我不知道这是否可行。
Veger
Veger
发布于 2020-12-17
0 人赞同

没有任何手段可以转换二进制。

常规的方式是。

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

  • 替换代码2】可以用来在Linux上运行Windows的二进制文件(但不能反过来)。

  • 谢谢你,我知道这不是太容易的转换。
    @veger Cygwin不能运行Linux二进制文件--见其 主页 :"Cygwin不是:一种在Windows上运行原生Linux应用程序的方法。如果你想让你的应用程序在Windows上运行,你必须从源头上重建它。"
    @彭白 你说的完全正确,我更新了答案。
    user251335
    user251335
    发布于 2020-12-17
    0 人赞同

    如果你有最新的windows10系统。只要在appstore中安装linux子系统,你就可以在windows中运行任何你想要的linux二进制文件。