在Windows下运行使用Linux GCC编译的程序

12

好的,朋友们,希望这是一个相当简单的问题:是否有一种方法可以在Windows操作系统上运行使用GCC在Linux下编译的C程序?请不要告诉我重新在Windows下编译它,因为我已经尝试过,但似乎没有c windows编译器具有128位本机类型,并且使用大数库会使我的程序变得像10到100倍慢。是否有一种实际在Windows下运行Linux二进制文件的方法?有人告诉我关于cygwin的一些事情,但我不知道从哪里开始。 (我的程序应该是可移植的,所以我不需要在我的计算机上安装程序等)。

非常感谢! Matteo


我试过了,但它无法识别__uint128_t... 有什么提示吗? - Matteo Monti
5个回答

10

没有直接的方法。Linux可执行文件与Windows有根本不同的格式。有几个其他选项。

  • cygwin。在cygwin下使用GCC编译程序。我相信这将构建一个使用cygwin兼容层的Windows exe。

  • 安装像VBox这样的虚拟机。在VBox中安装Linux。在那里运行程序。

  • http://www.andlinux.org有一个框架可以实现这一点。我从未尝试过,但有一个视频教程http://www.youtube.com/watch?v=nULDHPCm9p4


1
如果我在cygwin下编译程序,那么生成的.exe文件是否只要将"cygwin1.dll"放在同一目录下就可以在任何Windows计算机上使用? - Matteo Monti
1
Cygwin DLL 必须放在 Windows 可以找到的某个地方。老实说,我避免使用 Windows,不太记得如何设置了。 - Charlie Martin
你好!我尝试在cygwin下编译它,但是...!看起来它甚至无法识别__uint128_t标识符!我想知道...在哪个版本的cygwin中引入了__uint128_t?我的当前cygwin gcc版本是4.3.4... - Matteo Monti
1
不需要使用FLinux(ForeignLinux)软件重新编译,正如下面的一个答案所解释的那样。FLinux不支持Linux的所有功能。但对于一些命令行程序,我已经测试过它可以运行,并且可以直接在Windows上运行Linux二进制文件。 - Phil

5

在我看来,flinux 可以做到这一点。

从描述来看:

... 是一个动态二进制翻译器... 能够在 Windows 上运行未经修改的 Linux 二进制文件...

注意:我没有测试过这个。


1
我已经测试了FLinux来运行一个命令行Linux程序,它可以正常工作。无需重新编译程序。 - Phil
请注意,以下关于 flinux 2.0 的报告可能仅适用于该版本:旧版(1.0)或新版(2.1)在启动时会崩溃。日志记录器 flog 在所有情况下都可以平稳运行。 - jarnosz

3

请不要告诉我在Windows下重新编译它

很抱歉,您需要在Windows下重新编译它。

如果您真的找不到支持128位整数的编译器,您应该使用一些汇编语言来复制Linux编译器发出的指令。


3
自从Windows 10周年更新以来,Windows可以通过名为“Windows子系统Linux”(WSL)的方式原生运行Linux二进制文件,通常称为“Bash on Ubuntu on Windows”。
参见https://msdn.microsoft.com/en-us/commandline/wsl 安装后,您可以打开一个bash会话,导航到`/mnt//

0

在您的主机Windows操作系统上使用Linux虚拟机作为客户操作系统。在虚拟机中运行可执行文件。但是,在gcc-cygwin组合下编译最佳。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接