在 Windows 7 中交叉编译 C 和 C++ 应用程序,在 linux 下使用 MinGW

Posted

技术标签:

【中文标题】在 Windows 7 中交叉编译 C 和 C++ 应用程序,在 linux 下使用 MinGW【英文标题】:Cross-Compiling C and C++ application in Windows 7, using MinGW under linux 【发布时间】:2011-09-16 08:36:06 【问题描述】:

我在 Windows 7 中安装了 MinGW 编译器。GCC 版本是 4.6.1。

我有 Hello World 应用程序:

#include <stdio.h>

int main( int argc, char* argv[] )

    printf( "Hello World!" );
    return 0;

如何在 Windows 7 下使用 MinGW 编译器编译此应用程序,以便我可以在 linux 中运行此应用程序,而无需重新编译。

【问题讨论】:

ELF 和 PE 可执行格式并不是真正相同的二进制格式。 MinGW 是否允许交叉编译应用程序? 【参考方案1】:

您需要在这里区分两个系统:build 系统,这是您的编译器运行的系统,以及 host 系统,这是您的可执行文件将运行的系统运行。 MinGW 是宿主系统 Windows 的 GCC 编译器。因此,您可以在 Windows 上为 Windows 编译或在 Linux 上为 Windows 交叉编译。您正在寻找用于构建 Windows 以托管 linux 的交叉编译器,它可能包含在 Cygwin 中。

但是,通常这些东西并没有得到很好的支持,因为 Windows 通常用作最终用户专用系统,而不是用于开发,而 UNIX 系统则用于开发人员。所以,你在这里针对流进行编译,这不是太多人做的事情。

【讨论】:

【参考方案2】:

我不认为 MinGW 提供任何能够生成 linux 二进制文件的交叉编译器。

这可以使用 Cygwin 完成,它们提供交叉编译器,以便您可以在 Windows 主机上编译 linux 二进制文件。您只需要安装必要的软件包。

【讨论】:

以上是关于在 Windows 7 中交叉编译 C 和 C++ 应用程序,在 linux 下使用 MinGW的主要内容,如果未能解决你的问题,请参考以下文章

C++ Linux 到 Windows 交叉编译错误

将现代 C++ 从 Linux 交叉编译到 Windows

从 Mac 为 Windows、Linux 交叉编译 C++/QT [关闭]

在 Windows 上运行并生成 Linux 代码的 C++ 编译器

C++ 的 AIX xlC 交叉编译/链接未找到 C 符号

C ++中的安全交叉编译器ABI?