Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| tutorial_de_compilacion [2022/09/06 01:52] – [Microtetris] peron | tutorial_de_compilacion [2026/04/21 16:09] (actual) – editor externo 127.0.0.1 | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| - | ====== Tutorial de compilación ====== | + | ====== Tutorial de compilación |
| - | Con anterioridad de la [[microcomputadora# | + | Con anterioridad de la [[microcomputadora# |
| Por tal motivo, este tutorial te ilustrará con ejemplos básicos cómo se traduce el código fuente de un programa en lenguaje C de alto nivel a un programa ejecutable en este sistema compartido y otros compatibles. | Por tal motivo, este tutorial te ilustrará con ejemplos básicos cómo se traduce el código fuente de un programa en lenguaje C de alto nivel a un programa ejecutable en este sistema compartido y otros compatibles. | ||
| - | >Este tutorial no es uno de programación, | + | >Este tutorial no es uno de programación, |
| ===== Introducción ===== | ===== Introducción ===== | ||
| Línea 13: | Línea 13: | ||
| La diferencia radica en que los lenguajes de alto nivel son // | La diferencia radica en que los lenguajes de alto nivel son // | ||
| - | El lenguaje C diseñado por Dennis Ritchie (uno de los creadores de Unix) es uno de tales lenguajes de alto nivel, y se revela especialmente útil para la programación portable. Podrás utilizarlo en Texto-plano no sólo para emprender proyectos avanzados, sino también para aprender los pasos fundamentales para opera con lenguajes de alto nivel: | + | El lenguaje C diseñado por Dennis Ritchie (uno de los creadores de Unix) es uno de tales lenguajes de alto nivel, y se revela especialmente útil para la programación portable. Podrás utilizarlo en Texto-plano no sólo para emprender proyectos avanzados, sino también para aprender los pasos fundamentales para operar |
| ===Programación === | ===Programación === | ||
| Línea 19: | Línea 19: | ||
| La programación es un arte. Involucra una serie de procesos mujer/ | La programación es un arte. Involucra una serie de procesos mujer/ | ||
| - | Consideremos el orden de los procesos de la programación: | + | Consideremos el orden de los //procesos de la programación//: |
| - | | **Acción realizada: | + | ^ **Acción realizada: |
| |// | |// | ||
| |// | |// | ||
| Línea 31: | Línea 31: | ||
| - | Como puede verse, los últimos 4 pasos // | + | Como puede verse, los últimos 4 pasos // |
| - | En nuestro sistema compartido utilizaremos el conjunto de compiladores **CC** (puedes también utilizar **GCC**, | + | En nuestro sistema compartido utilizaremos el conjunto de compiladores **CC** (en [[GNU|GNU/ |
| ===== Compilación básica ===== | ===== Compilación básica ===== | ||
| - | La manera más simple de compilar consiste en llamar a CC es esta manera: | + | La manera más simple de compilar consiste en llamar a CC, así: |
| <code bash>cc codigo_fuente.c –o binario_ejecutable</ | <code bash>cc codigo_fuente.c –o binario_ejecutable</ | ||
| - | De esta manera, | + | CC oficiará de compilador automático, |
| >Incluso es opcional la opción '' | >Incluso es opcional la opción '' | ||
| Línea 61: | Línea 61: | ||
| Ya en tu directorio '' | Ya en tu directorio '' | ||
| - | <code c> | + | <file c holamundo.c> |
| // * * * Programa simple en C para mostrar "Hola Tercer Mundo!" | // * * * Programa simple en C para mostrar "Hola Tercer Mundo!" | ||
| #include < | #include < | ||
| Línea 67: | Línea 67: | ||
| int main() | int main() | ||
| { | { | ||
| - | printf(" | + | printf(" |
| return 0; | return 0; | ||
| } | } | ||
| - | </code> | + | </file> |
| Guarda los cambios y vuelve al Shell. | Guarda los cambios y vuelve al Shell. | ||
| Línea 92: | Línea 92: | ||
| Si bien la compilación automática es sumamente simple y conveniente, | Si bien la compilación automática es sumamente simple y conveniente, | ||
| - | ¡Aprenderemos, en cambio, los cuatro pasos de la compilación | + | ¡Aprendamos, en cambio, los cuatro pasos de la compilación, esta vez compilando |
| ==== Microtetris ==== | ==== Microtetris ==== | ||
| Línea 103: | Línea 103: | ||
| ...ya en este directorio, crea el fichero '' | ...ya en este directorio, crea el fichero '' | ||
| - | Ahora compila siguiendo los 4 pasos maquinales de la compilación manual. Opcionalmente, | + | Ahora compila siguiendo los 4 pasos maquinales de la compilación manual: |
| === 1. Preprocesar === | === 1. Preprocesar === | ||
| Primero preprocesa este //código fuente// '' | Primero preprocesa este //código fuente// '' | ||
| - | <code bash>time cc microtetris.c -E -o microtetris.i</ | + | <code bash>cc microtetris.c -E -o microtetris.i</ |
| Obtendrás así un fichero de //código fuente preprocesado// | Obtendrás así un fichero de //código fuente preprocesado// | ||
| Línea 115: | Línea 115: | ||
| Una vez parseado, podrás compilar tu código fuente con: | Una vez parseado, podrás compilar tu código fuente con: | ||
| - | <code bash>time cc microtetris.c -S</ | + | <code bash>cc microtetris.c -S</ |
| La compilación del código fuente traducirá el código fuente de alto nivel en un código fuente de bajo nivel específico para el procesador de la máquina, llamado //código de lenguaje ensamblador// | La compilación del código fuente traducirá el código fuente de alto nivel en un código fuente de bajo nivel específico para el procesador de la máquina, llamado //código de lenguaje ensamblador// | ||
| Línea 126: | Línea 126: | ||
| Ensambla el código en lenguaje ensamblador: | Ensambla el código en lenguaje ensamblador: | ||
| - | <code bash>time cc microtetris.s -c -o microtetris.o</ | + | <code bash>cc microtetris.s -c -o microtetris.o</ |
| Obtendrás ahora el //código objeto// '' | Obtendrás ahora el //código objeto// '' | ||
| Línea 136: | Línea 136: | ||
| Para crear el ejecutable código máquina binario debes entrelazar este código objeto (incluyendo sus librerías, si las tuviese), y sumarle los encabezados. De todo ello se encarga el enlazador de CC: | Para crear el ejecutable código máquina binario debes entrelazar este código objeto (incluyendo sus librerías, si las tuviese), y sumarle los encabezados. De todo ello se encarga el enlazador de CC: | ||
| - | <code bash>time cc microtetris.o -o microtetris.out</ | + | <code bash>cc microtetris.o -o microtetris.out</ |
| Lograrás así final el fichero ejecutable de salida, consistente en el //binario de código máquina// '' | Lograrás así final el fichero ejecutable de salida, consistente en el //binario de código máquina// '' | ||
| Línea 199: | Línea 199: | ||
| <code bash>cc –c programa.c –L./ | <code bash>cc –c programa.c –L./ | ||
| ==== Arkurses ==== | ==== Arkurses ==== | ||
| - | Sabiendo todo esto, introduce y compila [[arkurses.c|el código fuente de Arkurses]]. Se trata de un clon del juego Arkanoid que utiliza la funciones de las librerías de gráficas de terminal //ncurses// y //panel//. | + | Sabiendo todo esto, introduce y compila [[arkurses.c|el código fuente de Arkurses]]. Se trata de un clon del juego Arkanoid que utiliza la funciones de las librerías de gráficas de terminal //ncurses// y //panel//. Aprovecharemos para indicar también el comando **time**, que nos indicará el tiempo de procesador requerido por cada tarea de cómputo. |
| Para afrontar las dificultades indicadas anteriormente, | Para afrontar las dificultades indicadas anteriormente, | ||
| <code bash> | <code bash> | ||
| - | cc arkurses.c -lpanel -lncurses -o arkurses -Os -march=native | + | time cc arkurses.c -lpanel -lncurses -o arkurses -Os -march=native |
| </ | </ | ||
| Línea 211: | Línea 211: | ||
| <code bash> | <code bash> | ||
| #preprocesa y muestra el código parseado | #preprocesa y muestra el código parseado | ||
| - | cc arkurses.c -E -o arkurses.i | + | time cc arkurses.c -E -o arkurses.i |
| #compila arkurses.c con sus librerías y muestra el ensamblador resultante: | #compila arkurses.c con sus librerías y muestra el ensamblador resultante: | ||
| - | cc arkurses.c -lpanel -lncurses -Os -S -march=native ; cat arkurses.s ; | + | time cc arkurses.c -lpanel -lncurses -Os -S -march=native ; cat arkurses.s ; |
| #ensambla | #ensambla | ||
| - | cc arkurses.s -lpanel -lncurses -c -Os -march=native -o arkurses.o ; | + | time cc arkurses.s -lpanel -lncurses -c -Os -march=native -o arkurses.o ; |
| #enlaza todo y crea el binario de salida | #enlaza todo y crea el binario de salida | ||
| - | cc arkurses.o -lpanel -lncurses -o arkurses.out -Os -march=native ; | + | time cc arkurses.o -lpanel -lncurses -o arkurses.out -Os -march=native ; |
| #Renombra el fichero de salida de compilación | #Renombra el fichero de salida de compilación | ||
| Línea 234: | Línea 234: | ||
| <code bash>rm arkurses.c arkurses.i arkurses.s arkurses.o</ | <code bash>rm arkurses.c arkurses.i arkurses.s arkurses.o</ | ||
| ==== Conclusión ==== | ==== Conclusión ==== | ||
| + | |||
| + | Felicitaciones ¡Ya compilaste tu primer programa en C en texto-plano.xyz! Comparte tu logro con [[gab]]: | ||
| + | |||
| + | <code bash> | ||
| + | gab -m " | ||
| + | </ | ||
| Preprocesar, | Preprocesar, | ||
| + | |||
| + | Ver también: [[Tutorial de Compilación en Fortran]] | ||
