mipscross-compilingcrosstool-ng

crosstool-ng -- stdio.h: No such file or directory


I would like to cross compile a simple program that uses libncurses on my x86_64. Target system is MIPS.

My crosstool-ng-1.20 build went fine (with sample mips-unknown-elf)

However, a simple hello world ends badly.

#include <stdio.h>       

int main(void)           
{                        
    printf("OH HAI.\n"); 
    return 0;            
}            

--

x86host:~/toolchain$ mips-unknown-elf-gcc -o hello hello.c

hello.c:1:19: fatal error: stdio.h: No such file or directory
 #include <stdio.h>
                   ^
compilation terminated.

I'm clearly doing something terribly wrong here, but where do i start?


[Edit]

Thank you markgz. Codesourcery is exactly what i needed.

mips-linux-gnu-gcc.exe -static -o helloStatic hello.c

Proof of concept complete. Now off to compile my ncurses program.

[Switch:/]$ file /mnt/sd3/user/helloStatic
/mnt/sd3/user/helloStatic: ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1, 
statically linked, for GNU/Linux 2.6.16, with unknown capability
0x41000000 = 0xf676e75, not stripped

[Switch:/]$ uname -a
Linux Switch 2.6.32.59-cavium-octeon2.cge-cavium-octeon #1 
SMP PREEMPT Fri May 10 11:48:14 PDT 2013 mips64 GNU/Linux

[Switch:/]$ /mnt/sd3/user/helloStatic
HOLIDAYS ARE COMING.

Solution

  • You probably needed to build mips-linux-elf-gcc. Are you sure your MIPS target system is configured as big-endian?

    Anyway, you can avoid all these problems by downloading the free Mentor/Codesourcery MIPS gnu/gcc cross compilation tool chain from here. This toolchain is available for both Windows and Linux.