Programación General > C/C++
Compilación cruzada
GsOiD:
Hola que tal... he estado checando en la red, cómo realizar compilación cruzada...
Si alguien tiene experiencia en esto y me puede dar un panorama general de lo que se requiere hacer para generar el entorno de compilación cruzada, se lo agradeceré.
su -:
Ese es un tema interesante y muy dificil. Yo hace tiempo intente hacer mi propio toolchain pero es mucho trabajo, y se presentan ciertas complicaciones... lo mejor es conseguir uno ya hecho.
Aqui tienes un "How to" si quieres hacer uno. Hoy en dia es mas facil usar una maquina virtual que usar un compilador en cruz.
GsOiD:
gracias... le hecharé una hojeada. Cuando logre hacer algo comento.. :comp:
GsOiD:
¿Qué es la compilación cruzada?
Un compilador es un programa que transforma codigo a codigo ejecutable (básicamente). Como todos los programas un compilador corre en un tipo específico de computadora, y los resultados de los programas que compila (los codigos ejecutables) también corren en un tipo específico de computadora.
La computadora en donde el compilador funciona, es llamada el Host, y la computadora en donde los programas se ejecutan se llama objetivo. Entonces cuando el host y objetivo son el mismo tipo de máquina, el compilador es un compilador nativo. Y cuando el host y el objetivo son diferentes, el compilador es un compilador cruzado.
¿El porqué de la compilación cruzada?
En teoría, un usuario que desea construir programas para un dispositivo podría conseguir el hardware objetivo apropiado (o emulador), arrancar una distribución linux en el, y compilar nativamente sin ese entorno. Si este un enfoque valido, tiene algunas desventajas importantes para cosas como un router linksys o un ipod.
Velocidad
Capacidad
Disponibilidad
Flexibilidad
Conveniencia
¿Porqué la compilación cruzada es difícil?
La compilación nativa portable es difícil
La mayoría de los programas son desarrollados en hardware x86, en donde son compilados nativamente. Esto significa que la compilación cruzada se encuentra con dos tipos de problemas: problemas con el mismo programa y problemas con el sistema de construcción.
1.- El primer problema afecta a todos los objetivos que no son x86, tanto para construcciones nativas y cruzadas. Muchos programas suponen acerca del tipo de máquina en el que se ejecutan, en donde deben coincidir con la plataforma en cuestión o el programa no servirá. Los supuestos más comunes son:
*El tamaño de palabra
*Endianes
*Alineación: algunas plataformas pueden sólo leer o escribir instrucciones de direcciones que sólo son múltiplo de 4 bytes.
*Signo por defecto
*NOMMU: si la plataforma de tu sistema objetivo no tiene una unidad de manejo de memoria, varias cosas necesitan cambiar.
2.- Además de los problemas de la compilación nativa, la compilación cruzada tiene su propio conjunto de problemas:
*Problemas de configuración
*Hostcc vs Targetcc
*Fugas de la cadena de herramientas (Toolchain)
*Bibliotecas
*Pruebas
GsOiD:
Abajo está todo... esta cosa se volvió loca :P
Navegación
[#] Página Siguiente
Ir a la versión completa