Cross-compiler
A Cross-Compiler is a computer program that translates a computer program written in one computer language (called the source language) into an equivalent program written in another computer language (called the output or the target language) as in a normal compiler.
A cross-compiler is distinguished by producing output in a form to be used by a Computer_architecture other than the one hosting the cross-compiler. The output of a cross-compiler is usually the native machine language of the target system.
Cross-compilers are most often used for embedded systems or other such special purpose equipment (such as video game consoles and PDAs) where compiling on the destination system is impractical or impossible (whether through limited computational power or lack of input or interface features).
In recent years, some of the problems solved by cross-compilation have been replaced by the use of virtual machines (such as Java's JVM). The virtual machine method allows compiler output to be run by both the host and the target system.