GNU CC can function as a cross-compiler for many machines, but not all.
Cross-compilers for the Mips as target using the Mips assembler currently do not work, because the auxiliary programs `mips-tdump.c' and `mips-tfile.c' can't be compiled on anything but a Mips. It does work to cross compile for a Mips if you use the GNU assembler and linker.
Cross-compilers between machines with different floating point formats have not all been made to work. GNU CC now has a floating point emulator with which these can work, but each target machine description needs to be updated to take advantage of it.
Cross-compilation between machines of different word sizes is somewhat problematic and sometimes does not work.
Since GNU CC generates assembler code, you probably need a cross-assembler that GNU CC can run, in order to produce object files. If you want to link on other than the target machine, you need a cross-linker as well. You also need header files and libraries suitable for the target machine that you can install on the host machine.
Steps of Cross | Using a cross-compiler involves several steps that may be carried out on different machines. |
Configure Cross | Configuring a cross-compiler. |
Tools and Libraries | Where to put the linker and assembler, and the C library. |
Cross Headers | Finding and installing header files for a cross-compiler. |
Cross Runtime | Supplying arithmetic runtime routines (`libgcc1.a'). |
Build Cross | Actually compiling the cross-compiler. |