A cross compiler is a
compiler that is hosted on one platform (machine type and
operating system) that targets (produces output for) another platform.
Cross compilers are very popular for embedded development, where the target probably couldn't run a compiler. Typically an embedded platform has restricted RAM, no hard disk, and limited I/O capability. Code can be edited and compiled on a fast host machine (such as a PC or Unix workstation) and the resulting executable code can then be downloaded to the target to be tested. Cross compilers are beneficial whenever the host machine has more resources (memory, disk, I/O, etc.) than the target.
GCC, the GNU Compiler Collection, can be built as a cross compiler, and supports a huge number of host and target combinations. It supports as a target everything from 64 bit Unix boxes down to 8 bit microcontrollers like Atmel's AVR and Motorola's MC68HC11.