Compilar archivos de c desde el terminal (unix)
Este artículo explica como compilar desde el terminal en sistemas operativos con base en unix empleando gcc.
Contenido
GNU Compiler Collection
Usualmente referido como gcc, es un paquete que permite compilar y crear un archivo ejecutable a partir del código fuente.
Instalación
La libreria y el compilador usualmente se encuantra instalado junto al sistema operativo de fábrica. En Linux se encuentra en /usr/bin/gcc mientras que en MAC se debería encontrar en /Developer/usr/bin/gcc.
Para instalar los archivos, de no poseerlos, se debe escribir del terminal sudo apt-get install gcc donde sudo le pide al sistema permisologías de root o root user. De dicha forma, es necesario introducir la clave de administrador. De tener permisologías de root (ya sea escribiendo sudo -s) o conectandose desde super user (en MAC habilitado desde single user o con el disco de instalación), no es necesario escribir el prefijo y sólo es necesario introducir apt-get install gcc.
Tras correr este comando, el sistema operativo descargará de internet el paquete gcc y lo introducirá en la carpeta correspondiente. El usuario sin embargo podría especificar la ruta de destino para colocar los archivos en otro lugar.
Compilando un archivo desde el terminal
Primero que todo se debe abrir el terminal y posteriormente navegar hacia la carpeta donde se encuentra el archivo que deseamos compilar ya que de lo contrario es necesario introducir la ruta de acceso para especificar donde se encuentra el arhivo durante cada una de las líneas del proceso de compilación que se explicará más adelante.
Para navegar hacia una carpeta deseada en cualquier sistema UNIX se utilizan los mismos comandos:
- pwd: es usado para obtener el present working directory es decir la carpeta actual en la que encuentra el usuario.
- ls: muestra el contenido de la carpeta actual.
- cd: permite desplazarse dentro de las carpeta. cd [carpeta/carpeta] llevará a carpeta/carpeta dentro del folder actual. De no existir dará error.
- cd..: permite subir a la carpeta que contiene al folder actual.
- mkdir: permite crear una carpeta en el folder actual.
- cp: usado para copiar carpetas o archivos. Requiere path de arhivo a copiar, el lugar donde será copiado y el nombre de la copia.
- mv: similar a cp, mueve un archivo o carpeta eliminando el origial (similar a ctrl + x en Windows).
- rm: borra un archivo o carpeta (con todo su contenido).
De tener dudas se recomienda usar la función man (puede no existir en el sistema y debe ser insalada usando apt-get) para mostrar el manual con toda la información referente a las funciones de sistema operativo o incluso de las librerias de c. Se debe usar escribiendo man [insertar_funcion_aqui].
Crear o modificar el archivo a compilar
Para crear el documento en c que debe ser compilado se puede usar un editor de texto recordando guardar el archivo de forma correcta (extensión .c, es decir ejemplo.c, en ASCII). Para hacerlo desde el terminal (por conveniencia o necesidad al no tener editores de texto en sistemas operativos como Free BSD) se puede usar tanto nano o pico usados para modificar archivos de texto desde el terminal. Se recomienda altamente para los principiantes usar nano por su facilidad y debido a que existe tanto en sistemas Linux como en Mac.
Se puede usar nano [introducir_nombre_aqui] para modificar el archivo correspondiente o se puede crear uno usando nano [nombre_del_archivo_a_crear]. Independientemente luego de escribir o modificar el archivo se debe salir usando ^X (ctrl+x) y aceptar guardar el archivo y el nombre. Recordar que para compilar un archivo de c se debe escribir el documento con extensión .c.
Compilar el archivo
Una vez navegado hasta la carpeta donde esta el archivo a compilar (recordar que en esta misma carpeta se deben encontrar los archivos .h custom creados por el usuario si el path no se encuentra especificado en el documento .c) se procede a obtener el objeto .o y luego el ejecutable. Se realiza de la siguiente manera:
gcc -c archivo.c
gcc archivo.o -o nombre_del_ejecutable
./nombre_del_ejecutable
La primera linea compila el archivo y crea el abjeto, la segunda crea el ejecutable y la tercera ejecuta el programa de la raiz ./ de la carpeta actual, que de hecho es donde se encuentra el archivo ejecutable.
Compilando archivos usando la libreria de hilos
Primero que todo se debe incluir la liberia <thread.h> en el archivo en c aparte de las librerias comunes.
Para compilar el archivo desde la terminal se debe incluir como sufijo a la instrucción de gcc el termino -lpthread. De dicha forma tenemos:
gcc -c archivo.c -lpthread
gcc archivo.o -o nombre_del_ejecutable -lpthread
./nombre_del_ejecutable