【问题标题】:How to compile C code in Linux to run on Windows? [duplicate]如何在 Linux 中编译 C 代码以在 Windows 上运行? [复制]
【发布时间】:2017-06-21 08:02:59
【问题描述】:

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

【问题讨论】:

标签: c linux windows


【解决方案1】:

您需要一个交叉编译器才能在 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 时如何处理此类问题有任何见解或文章吗?
【解决方案2】:

您需要一个交叉编译器:一个针对另一个系统而不是运行它的编译器。

gcc 目标 windows 包含在 mingw 包中,也可以编译以在 Linux 上运行,并且许多 Linux 发行版已经包含包含它的包,因此只需在包管理工具中搜索“mingw”即可。

按照惯例,交叉编译器会将目标系统的名称附加到它们的名称前,因此用于编译 Windows 可执行文件的 gcc 的变体可能会被命名为 i686-w64-mingw32-gcc 之类的名称,但这可能会因提供的包而异由您的 Linux 发行版提供。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      您需要使用交叉编译器为不同的操作系统进行编译。最受欢迎的是mingw

      【讨论】:

        猜你喜欢
        • 2023-04-08
        • 2016-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-11
        相关资源
        最近更新 更多