Compilación y ejecución de programas


Dependiendo del sistema, se pueden encontrar diversos compiladores ya sea comprados o de dominio público. Los compiladores que se tienen aquí son:

	LENGUAJE	COMPILADOR	     ESTATUS
	____________________________________________________________ 
	    C		    gcc		  Dominio público
	    C		    c		     Comprado
	    C++		    cc		     Comprado
	 Fortran	    f77		     Comprado
	 Fortran90	    f90		     Comprado
	 Pascal		    pc		     Comprado
Para compilar solo se requiere del programa fuente, correr el compilador y obtener un archivo ejecutable llamado "a.out", ejemplo:

f77 hola.for
gcc hola.c

Para cambiar el nombre al archivo ejecutable desde la línea de compilación, seria:

f77 -o hola hola.for

Claro esta que los compiladores tienen una serie de opciones que no son de default y se deben de indicar para obtener los resultados deseados y evitar errores de compilación. El manual en línea nos da información de las opciones que maneja el compilador en uso.

man f77
man gcc

Se debe de considerar al compilador como un traductor, es decir dado un programa en un lenguaje determinado, el compilador lo traducirá al lenguaje de una máquina en particular. Los pasos generales que realiza un compilador son:

archivo fuente -> Compilador -> archivo objeto -> Ligador -> ejecutable

Cuando se realiza la unión de los archivos objeto (ligador) no solo une los archivos que se indicaron, también liga bibliotecas del sistema. Y para que el sistema conozca donde están dichas bibliotecas se debe de indicar explícitamente con una variable de ambiente

LIB_LIBRARY_PATH = /usr/openwin/lib:/usr/local/lib

además de indicar que bibliotecas ligar. Por ejemplo:
Para ligar las librerías gráficas de PGPLOT y las librerías de X11 se haría lo siguiente:

f77 -o graf graf.for -lpgplot -lX11

o para hacer uso de las librerias de STARLINK se anexaria lo siguiente a la linea de compilación:

-L/usr/local/StarLink/lib `/usr/local/StarLink/bin/sla_link`

En la red se encuentra diversa paquetería para compilar en diversos sistemas y como son un conjunto grande de programas es casi imposible indicar en una línea de comando todas las opciones necesarias y los archivos a ligar, por lo cual se utiliza una utileria de Unix llamada "make", la que utiliza el archivo "Makefile" donde define todas las opciones para compilar y ligar el paquete. Notar que si se esta compilando un paquete para OpenWindows y X11, en el archivo Makefile debe de contener estas rutas:

/usr/openwin/include
/usr/openwin/lib

Y debe de definirse donde se va a instalar el paquete, si eres un usuario normal se deberá de instalar en tu HOME y si se tiene acceso como superusuario, lo mas común es usar el directorio:

/usr/local/bin

o algún otro que se defina como el lugar donde se pondrán los paquetes que no son del sistema y por conveniencia se deben de respetar los directorios del sistema como son:

/usr/bin	/usr/sbin	/usr/openwin/bin	etc . . . 

Como un ejemplo practico de un programa demasiado conocido, puedes editar lo siguiente y compilarlo:

moises@tonatiuh% vi hi.c
#include <stdio.h>

main ()
{
  printf("\n");
  printf("**************\n");
  printf("*Hola a todos*\n");
  printf("**************\n\n");
}


moises@tonatiuh% gcc -o hi hi.c
moises@tonatiuh% hi
*Hola a todos*