如何在Linux中编译C代码以便在Windows上运行?

13

我正在使用Linux/GNU GCC编译C源代码。是否有任何方法可以生成可在x86或x64架构上运行Windows的.exe文件?编译后的代码需要在Linux机器上生成。


1
编译器是机器相关的。因此,我猜想您需要下载 Windows 版本的 GCC 来正确地将源代码编译成 Windows 可执行文件。 - John Doe
1
你可以尝试使用Wine,它会很好地工作。 - ForceBru
有没有可能在Linux机器上编译Windows二进制文件? 如何从Linux交叉编译64位Windows .exe文件? - phuclv
4个回答

27

若要在Linux系统中创建Windows可执行文件,则需要使用交叉编译器。

Mingw-w64是原始mingw.org项目的进步,旨在支持在Windows系统上使用GCC编译器。

安装交叉编译工具。

sudo apt-get install mingw-w64

32位

i686-w64-mingw32-gcc -o test.exe test.c

64位

x86_64-w64-mingw32-gcc -o test.exe test.c

有趣。我刚刚尝试在我的一个项目上使用了libcsv,而我已经在我的Linux机器上安装了它。然而,尝试编译它却给了我这个错误:fatal error: csv.h: No such file or directory - 你有什么关于在使用Mingw-w64时如何处理这种问题的见解或文章吗? - domsson

2

这被称为交叉编译。但是GCC本身不提供该功能。您可以使用MinGW和/或MinGW-w64项目提供的工具集。 MinGW允许您交叉编译到Win32平台,而MinGW-w64允许您为Win32和Win64执行相同的操作。 它们都基于GCC。


2
你需要一个交叉编译器:一个能够针对不同于其所运行系统的系统进行编译的编译器。
针对 Windows 的 gcc 编译器包含在 mingw 包中,也可以编译成在 Linux 上运行的版本。许多 Linux 发行版已经包含了它的软件包,因此只需在软件包管理工具中搜索 "mingw" 即可。
按照惯例,交叉编译器的名称是目标系统的名称加在其名称前缀上的,因此用于编译 Windows 可执行文件的 gcc 版本可能会被命名为 i686-w64-mingw32-gcc,但这取决于您的 Linux 发行版提供的软件包。

1

你需要使用交叉编译器来为不同的操作系统进行编译。最流行的是mingw。


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