compilador cruzado


Un compilador cruzado es un compilador capaz de crear código ejecutable para una plataforma distinta de aquella en la que se ejecuta el compilador. Por ejemplo, un compilador que se ejecuta en una PC pero genera código que se ejecuta en un teléfono inteligente Android es un compilador cruzado.

Se necesita un compilador cruzado para compilar código para múltiples plataformas desde un host de desarrollo. La compilación directa en la plataforma de destino podría no ser factible, por ejemplo, en sistemas integrados con recursos informáticos limitados.

Los compiladores cruzados son distintos de los compiladores fuente a fuente . Un compilador cruzado es para la generación de código de máquina de software multiplataforma , mientras que un compilador de fuente a fuente traduce de un lenguaje de programación a otro en código de texto. Ambos son herramientas de programación .

El uso fundamental de un compilador cruzado es separar el entorno de construcción del entorno de destino. Esto es útil en varias situaciones:

El uso de máquinas virtuales (como la JVM de Java ) resuelve algunas de las razones por las que se desarrollaron los compiladores cruzados. El paradigma de la máquina virtual permite que se use la misma salida del compilador en múltiples sistemas de destino, aunque esto no siempre es ideal porque las máquinas virtuales suelen ser más lentas y el programa compilado solo se puede ejecutar en computadoras con esa máquina virtual.

Por lo general, la arquitectura del hardware difiere (por ejemplo, al compilar un programa destinado a la arquitectura MIPS en una computadora x86 ), pero la compilación cruzada también es aplicable cuando solo difiere el entorno del sistema operativo , como cuando se compila un programa FreeBSD en Linux , o incluso solo la biblioteca del sistema. , como al compilar programas con uClibc en un host glibc .