A compiler is a program that translates a high-level language program into a functionally equivalent low-level language program. So, a compiler is basically a translator whose source language (i.e., language to be translated) is the high-level language, and the target language is a low-level language; that is, a compiler is used to implement a high-level language on a computer.
A cross-compiler is a compiler that runs on one machine and produces object code for another machine. The cross-compiler is used to implement the compiler, which is characterized by three languages:
- The source language,
- The object language,
- The language in which it is written.
In computer science a boot strapping is the process of writing a compiler in the target programming language which its intended compiler applying this technique less to the self hosting compiler.