Search code examples
ccross-platformcross-compiling

Cross Platform C?


I am running Linux Ubuntu 10.04 and I have a Windows 7 machine and a MacBook running Mac OS X 10.6.4. How can I write a simple C program (as in NOT QT!) like:

#include <stdio.h>

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

to run on all my machines without having to compile this program on Ubuntu, then Windows 7, then Mac OS X? Could I just create this in Ubuntu and cross compile it to run on several different operating systems?
UPDATE
I do not mean to produce ONE binary to run on all. I mean to produce THREE binaries from the same C code in the same OS.


Solution

  • An executable has a specific format (e.g. ELF) and architecture (e.g. x86). Thus, you do have to compile multiple times. However, it is possible to cross-compile to e.g. Windows 7 x86 and Mac OS X x86 from Ubuntu. The procedures for each are different, as you would expect.

    For Windows, you will want mingw32. See Compile Windows C console applications in Linux .

    For OS X, see How to compile Intel Mac binaries on Linux? , which links to a tutorial.

    You can search to find more information on each.