我正在运行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代码生成三个二进制文件。
答案 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)