| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa |
| tutorial_de_compilacion [2022/09/06 02:06] – peron | tutorial_de_compilacion [2026/04/21 16:09] (actual) – editor externo 127.0.0.1 |
|---|
| ====== Tutorial de compilación ====== | ====== Tutorial de compilación en C ====== |
| |
| Con anterioridad de la [[microcomputadora#microcomputadoras hogareñas|computación hogareña]], los [[pubnix|sistemas multiusuairi@]] constituyeron el principal medio para programar. | Con anterioridad de la [[microcomputadora#microcomputadoras hogareñas|computación hogareña]], los [[pubnix|sistemas multiusuari@]] constituyeron el principal medio para programar. |
| |
| 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, utilizaremos código pre-hecho. | >Este tutorial no es uno de programación, utilizaremos código pre-hecho. Si deseas programar, puedes acceder a [[https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C|Wikilibro de Programación en C]] o [[https://trspos.com/c-programming/|recursos en línea trspos]], entre [[el lenguaje de programación C|muchas otras recomendables]]. |
| |
| ===== Introducción ===== | ===== Introducción ===== |
| La diferencia radica en que los lenguajes de alto nivel son //portables//, mientras que los de bajo nivel - además de ser más difíciles de aprender - están imbuidos de las particularidades del microprocesador en donde se ejecutan. Aprender los lenguajes de alto nivel permite escribir programas para múltiples computadoras, que sean -además - más simples de compartir. | La diferencia radica en que los lenguajes de alto nivel son //portables//, mientras que los de bajo nivel - además de ser más difíciles de aprender - están imbuidos de las particularidades del microprocesador en donde se ejecutan. Aprender los lenguajes de alto nivel permite escribir programas para múltiples computadoras, que sean -además - más simples de compartir. |
| |
| 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: su compilación. | 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 con lenguajes de alto nivel: lo que llamamos //procesos de la programación//, o - de forma genérica - la //compilación//. |
| |
| ===Programación === | ===Programación === |
| La programación es un arte. Involucra una serie de procesos mujer/máquina para resolver un problema determinado. | La programación es un arte. Involucra una serie de procesos mujer/máquina para resolver un problema determinado. |
| |
| Consideremos el orden de los procesos de la programación: | Consideremos el orden de los //procesos de la programación//: |
| |
| | **Acción realizada:** | **Genera:** |**Opción de CC para detener en este paso:** | | ^ **Acción realizada:** ^ **Genera:** ^**Opción de CC para detener en este paso:** ^ |
| |//Imaginar// | Percepción de un problema | | | |//Imaginar// | Percepción de un problema | | |
| |//Considerar un problema __de programación__// |código //in mente// | (esto es Cerebral) | | |//Considerar un problema __de programación__// |código //in mente// | (esto es Cerebral) | |
| |
| |
| Como puede verse, los últimos 4 pasos //maquinales// de la programación con lenguajes de alto nivel son practicados por medio de un **Compilador**, un programa de computadora capaz de traducir el //código fuente// escrito en un lenguaje en otro lenguaje distinto de operación (el //código destino//). | Como puede verse, los últimos 4 pasos //maquinales// de la programación con lenguajes de alto nivel son practicados por medio de un **Compilador**, un programa de computadora capaz de traducir el //código fuente// escrito en un lenguaje en otro lenguaje de operación distinto (el //código destino//). |
| |
| |
| En nuestro sistema compartido utilizaremos el conjunto de compiladores **CC** (puedes también utilizar **GCC**, en [[GNU|GNU/Linux]]). Este super-compilador por línea de comandos es capaz de afrontar en traducir tu código o cualquiera que te hayan compartido. | En nuestro sistema compartido utilizaremos el conjunto de compiladores **CC** (en [[GNU|GNU/Linux]] puedes también utilizar **GCC**). Este super-compilador por línea de comandos es capaz de afrontar en traducir tu código fuente propio o bien cualquiera que te hayan compartido. |
| |
| |
| ===== 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> | <code bash>cc codigo_fuente.c –o binario_ejecutable</code> |
| |
| De esta manera, CC oficiará de compilador automático, y procesará un fichero de código fuente llamado ''codigo_fuente.c'' para generar como resultado un fichero de destino ejecutable, llamado ''binario_ejecutable''. Si todo va bien, CC será tan parco que no informará nada, simplemente compilará y creará el ejecutable sin más decir. | CC oficiará de compilador automático, y procesará un fichero de código fuente llamado ''codigo_fuente.c'' para generar como resultado un fichero de destino ejecutable, llamado ''binario_ejecutable''. Si todo va bien, CC será tan parco que no informará nada, simplemente compilará y creará el ejecutable sin decir más. |
| |
| >Incluso es opcional la opción ''-o'' que indica el fichero ejecutable de destino: si no la incluyes , CC almacenará el resultado de la compilación en un fichero ejecutable de nombre llamado genéricamente ''a.out''. | >Incluso es opcional la opción ''-o'' que indica el fichero ejecutable de destino: si no la incluyes , CC almacenará el resultado de la compilación en un fichero ejecutable de nombre llamado genéricamente ''a.out''. |
| Ya en tu directorio ''~/src/holamundo'', [[editores de texto|usa tu editor favorito para crear un fichero]] llamado ''holamundo.c'', e incorpórale el siguiente //código fuente// en lenguaje C: | Ya en tu directorio ''~/src/holamundo'', [[editores de texto|usa tu editor favorito para crear un fichero]] llamado ''holamundo.c'', e incorpórale el siguiente //código fuente// en lenguaje C: |
| |
| <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 <stdio.h> | #include <stdio.h> |
| int main() | int main() |
| { | { |
| printf("Hola Tercer Mundo!"); | printf("Hola Tercer Mundo!\n"); |
| | |
| return 0; | return 0; |
| } | } |
| </code> | </file> |
| Guarda los cambios y vuelve al Shell. | Guarda los cambios y vuelve al Shell. |
| |
| Si bien la compilación automática es sumamente simple y conveniente, ¡no nos muestra los pasos intermedios, y tampoco es tan divertida! | Si bien la compilación automática es sumamente simple y conveniente, ¡no nos muestra los pasos intermedios, y tampoco es tan divertida! |
| |
| ¡Aprenderemos, en cambio, los cuatro pasos de la compilación con un juego! | ¡Aprendamos, en cambio, los cuatro pasos de la compilación, esta vez compilando un [[juegos|juego]]! |
| |
| ==== Microtetris ==== | ==== Microtetris ==== |
| <code bash>rm arkurses.c arkurses.i arkurses.s arkurses.o</code> | <code bash>rm arkurses.c arkurses.i arkurses.s arkurses.o</code> |
| ==== 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 "¡Acabo de escribir, compilar y ejecutar mi primer programa en C!" |
| | </code> |
| |
| Preprocesar, base para compilar. Compilar, base para ensamblar. Ensamblar, base para enlazar. Y enlazar, base para Ejecutar. | Preprocesar, base para compilar. Compilar, base para ensamblar. Ensamblar, base para enlazar. Y enlazar, base para Ejecutar. |
| | |
| | Ver también: [[Tutorial de Compilación en Fortran]] |