跨平台C?

我运行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中创建它并交叉编译它以在多个不同的操作系统上运行?
UPDATE
我并不是说要生成一个二进制文件来运行。 我的意思是从同一个OS中的相同C代码生成三个二进制文件。


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

对于Windows,您将需要mingw32。 请参阅在Linux中编译Windows C控制台应用程序。

对于OS X,请参阅如何在Linux上编译英特尔Mac二进制文件? ,它链接到一个教程。

您可以搜索以查找每个的更多信息。


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

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

链接地址: http://www.djcxy.com/p/54597.html

上一篇: Cross Platform C?

下一篇: platform compiling of a Qt application