En este artículo voy a explicar cómo instalar Code::Blocks en CentOS 7 y cómo crear nuestro primer ejecutable, el clásico "Hola Mundo" en lenguaje C. Code::Blocks es un entorno de desarrollo integrado (IDE) open source multiplataforma para los lenguajes de programación C, C++ y Fortran.

Este cuatrimestre me desempeño como ayudante en la cátedra Organización de Computadoras, donde los alumnos estudian los primeros conceptos de bajo nivel de todo sistema de computación: los principales componentes de un CPU, la memoria, dispositivos de entrada salida, etc. Esta materia está estrechamente relacionada con Arquitectura de Computadoras. En Organización se estudia la relación e interconexión de las unidades funcionales de una computadora, mientras que en Arquitectura se estudian las diferentes formas en que se construye cada unidad para implementar las funciones especificadas por la organización.

Para comprender estos conceptos teóricos relacionados al funcionamiento de la organización de una computadora (por ejemplo, cómo se relaciona el procesador con la memoria y los sistemas de archivos), es necesario estudiar lenguajes de programación de bajo nivel, es decir lenguajes en los que sus instrucciones realicen un control directo sobre el hardware (CPU, memoria, dispositivos). Con este objetivo, en la cátedra se estudian los lenguajes C y el lenguaje ensamblador.

Mi tarea a lo largo del curso será introducir a los alumnos el lenguaje de programación C. Para aquellos desprevenidos, C es un lenguaje de programación orientado a la programación de sistemas operativos, con el que está escrito por ejemplo el kernel Linux, Windows, y una gran cantidad de aplicaciones de escritorio. C utiliza tipos de datos estáticos, es débilmente tipificado, de nivel medio pero con muchas características de bajo nivel. Dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar código en ensamblador con código C o acceder directamente a memoria o dispositivos periféricos. Si algún curioso tiene tiempo libre y desea aprender un nuevo lenguaje de programación, ¿por qué no aprender el lenguaje con el que está escrito el kernel Linux?



Bien, en este punto muchos se preguntarán "¿quién necesita un IDE para un lenguaje de bajo nivel?". Es decir, para programar en C sólo hace falta un editor como nano o vi y el compilador gcc. La realidad es que la mayoría de los alumnos llegan a este curso sin saber lo que significa "Linux", "Unix", ni nada por el estilo, sólo conocen el sistema operativo de las ventanitas. Y por otro lado, no conocen otra cosa que no sean herramientas de entorno gráfico. Por estas razones se utiliza Code::Blocks como entorno de desarrollo durante el cursado. No es la intención de este artículo debatir por qué no se obliga a utilizar GNU/Linux en las escuelas, universidades, y en la administración pública. Y por otro lado Code::Blocks es multiplataforma, por lo que se puede instalar sin inconvenientes en Windows, GNU/Linux y OS X.

Como mencionaba al comienzo del artículo, Code::Blocks es un entorno de desarrollo integrado (IDE) libre para los lenguajes C, C++ y Fortran, creado para satisfacer las necesidades más demandantes de los usuarios. Está diseñado para ser muy extensible y configurable, alrededor de un framework de plugins. Tiene todas las características necesarias con una interfaz consistente a lo largo de las diferentes plataformas para las que está disponible.

Ya lo había instalado en mi Slackware 14.1 (está disponible en slackbuilds.org) y quise instalarlo en CentOS 7. Para ello tuve que seguir los siguientes pasos:

Descargar la última versión del código fuente de Code::Blocks desde SourceForge:

wget http://sourceforge.net/projects/codeblocks/files/Sources/13.12/codeblocks_13.12-1.tar.gz

Extraer el paquete:

tar xvf codeblocks_13.12-1.tar.gz 

Cambiar al directorio descomprimido:

cd codeblocks-13.12/

Instalar las dependencias wxGTK y wxGTK-devel (y cualquier otra que pueda surgir durante la configuración del paquete):

sudo yum install wxGTK wxGTK-devel

Configurar el paquete:

./configure

Finalmente compilar e instalar:

make
sudo make install

La instalación es muy simple, ahora veamos cómo crear nuestro primer proyecto en Code::Blocks.

Creando un proyecto en Code::Blocks

Abrir Code::Blocks ejecutando codeblocks:

Al iniciar, detecta los compiladores existentes en el sistema. Como se trata de un sistema GNU/Linux detecta el compilador gcc (GNU C Compiler):

La interfaz de Code::Blocks es similar a la de todo IDE. En la ventana principal se muestra el editor de código fuente, a la izquierda el navegador de proyectos y archivos, y debajo el compilador, debugger, etc:

Crear un nuevo proyecto desde el menú "File > New > Project...":

Seleccionar "Empty project" y continuar.

En este punto es recomendable crear por primera y única vez un directorio donde guardar todos los proyectos, por ejemplo "workspace". Para cada proyecto, Code::Blocks creará automáticamente un subdirectorio. Especificar un nombre para el proyecto y continuar:

Seleccionar el compilador GCC y crear las configuraciones "Debug" y "Release":

Ya hemos creado el proyecto, el cual se encuentra inicialmente en blanco:

A continuación vamos a agregar un archivo de código fuente C desde el menú "File > New > File...":

Seleccionar "C/C++ source" y continuar:

Especificar el lenguaje C:

Indicar el nombre de archivo con la ruta completa y agregarlo a las configuraciones "Debug" y "Release":

Se observa que el archivo ha sido agregado al proyecto, ahora resta crear el código fuente.

¡Hola Mundo!

Lo que suele hacer todo programador cada vez que se topa con un nuevo lenguaje, es tratar de imprimir el clásico mensaje "Hola Mundo", o "Hello World" (en inglés).

Agregar las siguientes líneas en el archivo de código fuente C recién creado:

Luego, presionar el botón con el icono de engranaje para compilar el código (traducir de código C a lenguaje máquina y crear el ejecutable ELF):

También es posible compilar desde el menú "Build > Build", o utilizando el atajo de teclado "Ctrl+F9".

Si no hay errores de sintaxis, es posible ejecutar el programa utilizando el icono "play", desde el menú "Build > Run" o mediante el atajo "Ctrl+F10". Inmediatamente se abre una terminal mostrando la salida estándar del programa:

¡Exito!

Luego de compilar es posible correr el ejecutable directamente desde una consola:

[emi@hal9000 ~]$ cd /home/emi/workspace/HolaMundo/
[emi@hal9000 HolaMundo]$ ll
total 16
drwxr-xr-x 3 emi emi 4096 Aug 26 13:59 bin
-rw-rw-r-- 1 emi emi   66 Aug 26 13:59 HolaMundo.c
-rw-rw-r-- 1 emi emi  998 Aug 26 13:55 HolaMundo.cbp
drwxr-xr-x 3 emi emi 4096 Aug 26 13:59 obj
[emi@hal9000 HolaMundo]$ cd bin/Debug/
[emi@hal9000 Debug]$ ll
total 12
-rwxrwxr-x 1 emi emi 9595 Aug 26 13:59 HolaMundo
[emi@hal9000 Debug]$ ./HolaMundo
¡Hola Mundo!
[emi@hal9000 Debug]$

Code::Blocks consume el 100% de CPU y toda la memoria RAM

En mi box Slackware me topé con este horrible bug que me causó problemas hasta que encontré la solución en el mejor foro de Linux en Internet: LinuxQuestions.org - Codeblocks problem. Por alguna razón, luego de iniciar codeblocks, éste comenzaba a consumir el 100% de CPU y toda memoria disponible, hasta inutilizar el sistema. El problema está relacionado al plugin de autocompletamiento de código (Code completion). En Slackware, el paquete SeaMonkey tiene algunos links simbólicos apuntando a sí mismos (no entiendo por qué, supongo que por compatibilidad hacia atrás), que hacen que dicho plugin cicle indefinidamente. La solución es deshabilitar el plugin "Code completion", o eliminar estos links problemáticos:

sudo rm /usr/include/seamonkey-2.26.1/xpcom
sudo rm /usr/include/seamonkey-2.26.1/plugin
sudo rm /usr/include/seamonkey-2.26.1/nss

Manual de programación en lenguaje C

Para finalizar el artículo, dejo un link a uno de los mejores manuales de C que he encontrado: C Programming - A comprehensive look at the C programming language and its features.

Descargar el libro completo en versión PDF: C Programming.


Tal vez pueda interesarte


Compartí este artículo