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/08/19 21:08] – [Compilación Avanzada] 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 55: | Línea 55: | ||
| <code bash> | <code bash> | ||
| - | mkdir ~/ | + | mkdir -p ~/ |
| cd ~/ | cd ~/ | ||
| </ | </ | ||
| 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 ==== | ||
| - | Compila manualmente ahora un clon del Tetris. | + | Compila manualmente ahora un clon del Tetris. |
| Crea un directorio de trabajo para el juego: | Crea un directorio de trabajo para el juego: | ||
| Línea 103: | Línea 103: | ||
| ...ya en este directorio, crea el fichero '' | ...ya en este directorio, crea el fichero '' | ||
| - | Ahora compila, pero siguiendo los 4 pasos maquinales de la compilación manual: | + | 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>cc microtetris.c -E -o microtetris.p</ | + | <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// |
| === 2. Compilar === | === 2. Compilar === | ||
| Línea 159: | Línea 159: | ||
| Elimina los ficheros intermedios del proceso de compilación: | Elimina los ficheros intermedios del proceso de compilación: | ||
| - | <code bash>rm ~/ | + | <code bash>rm ~/ |
| Si lo deseas, también puedes eliminar el código fuente. | Si lo deseas, también puedes eliminar el código fuente. | ||
| 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.p | + | 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 232: | Línea 232: | ||
| Luego elimina los sobrantes y deja el ejecutable, con | Luego elimina los sobrantes y deja el ejecutable, con | ||
| - | <code bash>rm arkurses.c arkurses.p 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]] | ||
