2011-11-24 28 views
12

¿Es posible que gcc, instalado en fedora 16, realice una compilación cruzada para una CPU diferente, digamos SPARC? Tengo una cierta comprensión, necesito un experto para corregirme si estoy equivocado. Los diferentes sistemas operativos difieren según las llamadas al sistema que utilizan para acceder al núcleo o en su totalidad por el kernel que utilizan. ¿ES ESTO CORRECTO? diferentes kernels entiende diferentes llamadas de sistemas para acceder al hardware subyacente. binarios o ejecutables o programas no son más que un montón de llamadas al sistema solamente. por lo tanto, cada sistema operativo tiene su propio ejecutable. un ejecutable destinado a ejecutarse en windows wound no ejecutado en Linux. mediante la compilación cruzada del código fuente de cualquier ejecutable de windown, podemos generar ejecutable para otros sistemas operativos. palabra PLATAFORMA significa sistema operativo. POSIX son ciertos estándares de diseño para sistemas operativos tipo UNIX. usualmente compilación cruzada para diferentes sistemas operativos. PERO, ¿podemos cruzar la compilación para hardware diferente también? por ejemplo, en el caso de un microcontrolador que no tiene un sistema operativo?puede gcc cross compilar para diferentes CPU?

+0

La última vez que necesité un compilador cruzado, encontré esta guía útil: http://linux.bytesex.org/cross-compiler.html – sarnold

+0

@Saurabh: He escrito un pequeño tutorial sobre cómo obtener un compilador cruzado para Sparc y ejecutando el ejecutable en el emulador Qemu. Tu podrias encontrar esto útil. : https: //www.ee.iitb.ac.in/course/~nehak/SparcQemu.html –

Respuesta

11

No. No puede usar la máquina nativa (x86) gcc para compilar archivos de programa para una arquitectura diferente. Para eso necesita un compilador cruzado-gcc que sea específico para esa arquitectura de procesador.

Su comprensión sobre las llamadas al sistema para el sistema operativo es correcta. Cada sistema operativo tiene su propio conjunto de llamadas al sistema que ha sido utilizado por la biblioteca. Estas bibliotecas al final se traducirán al lenguaje de máquina para el procesador.

Cada arquitectura de procesador tiene su propio conjunto de instrucciones conocido como Arquitectura de conjuntos de instrucciones (ISA). Por lo tanto, cuando se compila un programa escrito en lenguaje de alto nivel (como C), se debe convertir a lenguaje de máquina desde su ISA. Este trabajo lo realiza el compilador (gcc). Un compilador será específico para una sola arquitectura de procesador. Por ejemplo, gcc es para procesador x86. Entonces, si quiere un compilador para un procesador diferente en su máquina x86, debe ir a un compilador cruzado de ese procesador.

2

Tendría que compilar tal versión. Eso es parte del proceso de portar gcc a una nueva plataforma. Usted crea una versión que compila de forma cruzada, luego realiza una compilación cruzada de esa versión, luego prueba esa versión en la nueva plataforma, depura, enjuaga y repite.

+0

¿Quiere decir que solo puedo crear una versión de gcc-SPARC en mi máquina de inteligencia? ¿Pero solo puede ejecutarlo y probarlo en SPARC? – KawaiKx

+0

@Saurabh No, no quiero decir eso en absoluto. Quiero decir exactamente lo que dije. Puede compilar un compilador cruzado para SPARC en Intel, ejecutarlo en Intel, usarlo para compilarse y ejecutar el resultado en SPARC. – EJP

+0

o.k .. entonces puedo construir, instalar y ejecutar un compilador para una CPU diferente en mi máquina intel. La única pega es que la salida solo se puede ejecutar y probar en la CPU de destino, lo cual es bastante lógico ... gracias por su tiempo y paciencia. – KawaiKx

Cuestiones relacionadas