跨平台C?

时间:2010-09-19 01:28:52

标签: c cross-platform cross-compiling

我正在运行Linux Ubuntu 10.04,我有一台Windows 7机器和一台运行Mac OS X 10.6.4的MacBook。我怎样才能编写一个简单的C程序(如 NOT QT! ),如:

#include <stdio.h>

int main(int argc, char **argv)
{
    printf("Hello Linux and Mac and Windows!")
    return 0;
}

在我的所有机器上运行而无需在Ubuntu上编译该程序,然后是Windows 7,然后是Mac OS X?我可以在Ubuntu中创建它并交叉编译它以在几个不同的操作系统上运行吗? 的更新
我并不是要生成一个二进制文件来运行。我的意思是在同一个操作系统中从相同的C代码生成三个二进制文件。

3 个答案:

答案 0 :(得分:11)

可执行文件具有特定格式(例如ELF)和体系结构(例如x86)。因此,您必须多次编译。但是,可以交叉编译到例如来自Ubuntu的Windows 7 x86和Mac OS X x86。正如您所料,每个程序都不同。

对于Windows,您需要mingw32。请参阅 Compile Windows C console applications in Linux

对于OS X,请参阅 How to compile Intel Mac binaries on Linux? ,其链接到a tutorial

您可以搜索以查找有关每种信息的更多信息。

答案 1 :(得分:2)

不幸的是,Linux,Windows和OSX使用的可执行文件格式在细节上有很大的不同。没有办法生成一个适用于所有三个的单个二进制文件。

可以使用来自Linux的交叉编译器生成Windows和OSX可执行文件(反之亦然,或者你喜欢的任何其他组合)但是设置构建环境可能比它的价值更麻烦。如果您真的想尝试,请参阅http://www.kegel.com/crosstool/

答案 2 :(得分:0)

跨平台C Hello World!桌面窗口应用程序。 Windows / macOs / Linux。 (不是C ++,不是QT)

https://nappgui.com/en/start/hello.html