www.delorie.com/djgpp/doc/ug/basics/compiling.html   search  

Guнa: Compilaciуn de programas

Debido a su origen Unix, GCC tiene un estilo diferente en cuanto a la sintaxis de las lнneas de comando y sus propios algoritmos de compilaciуn y enlazado (link). Tiene ademбs una abundacia excesiva de opciones, algunas de ellas oscuras o semidocumentadas. Esto suele confundir a los usuarios, en especial a aquйllos que han tenido una experiencia previa con compiladores C para DOS.

Dado que GCC es un compilador, su propуsito principal es convertir el cуdigo fuente que usted escribe en programas que el ordenador pueda ejecutar. Para ello invoca varios recursos. Primero de todo, lee sus cуdigos fuente. Basбndose en la extensiуn de fichero que usted usу para su programa, selecciona los comandos apropiados que necesita ejecutar para convertir su cуdigo fuente en el fichero de salida que usted especificу. Recuerde que gcc es primordialmente un compilador Unix, asн que asume que en los nombres de fichero que usted le da se distinguen mayъsculas y minъsculas! Aquн tiene una lista de las extensiones de fichero y lo que gcc hace con ellas.

.c (minъsculas)
Cуdigo fuente C estбndar. Note que .C (mayъsculas) no es cуdigo fuente C - es un cуdigo fuente de C++. Los ficheros fuente de C son preprocesados (a travйs de cpp) buscando los #includes y #defines, y luego son compilados por cc1.

.m
Ficheros Objective C. Preprocesados y luego compilados por cc1obj. Necesitarб obc*b.zip para compilar este tipo de archivos.

.h
Estos son los ficheros include. Aunque gcc no los compila, reconoce la extensiуn para evitar que usted intente compilarlos.

.i
Estos son los archivos fuente C que ya han sido preprocesados. gcc no los preprocesarб otra vez, pero los compilarб con cc1.

.s (minъsculas)
Ficheros fuente de ensamblador. Йstos se envнan directamente a as.

.S (mayъsculas)
Tambiйn son ficheros fuente de ensamblador, pero йstos son preprocesados con cpp antes de ser ensamblados. De esta forma, puede usar #include y #define. Recuerde que gcc distingue entre mayъsculas y minъsculas! Si usa un Makefile, probablemente sea mejor indicar explнcitamente sus ficheros fuente de ensamblador de modo que no dependa de la utilizaciуn por defecto de mayъsculas o minъsculas de make por defecto.

.cc .cxx .cpp .c++ .C (mayъsculas)
Fuentes C++. Estos son preprocesados con cpp y luego compilados con cc1plus. Necesitarб gpp*b.zip.

.ii
Cуdigos fuente C++ que ya han sido preprocesados. Йstos son enviados directamente a cc1plus.

.ads .ada
Fuentes Ada. Йstos son preprocesados y compilados con el compilador ada, gnat1. Necesitarб instalar GNU Ada para compilar estos ficheros.

.o
Ficheros Objeto. Йstos son la salida del compilador/ensamblador. Si se le indica a gcc que simplemente compile (usando la opciуn -c), йstos son los ficheros que crea. Se pueden enlazar varios ficheros objeto juntos para producir un ejecutable.

.a
Bibliotecas. Йstos ficheros contienen mъltiples ficheros objeto, que gcc puede enlazar en sus programas para suministrarle las funciones que usted ha llamado.

Aquн tiene un resumen de lo que hace gcc:

flow diagram

Probablemente se habrб dado cuenta de que gcc tambiйn puede generar diferentes tipos de ficheros de salida. Las opciones -E, -S, y -c indican a gcc que detenga el proceso en el punto indicado y que genere la salida. Nota: La salida de la opciуn -E se muestra en la pantalla, mientras las otras opciones hacen que se guarde la salida en un fichero. Si lo desea, puede redireccionar la salida a un fichero.

Si no se especifica un nombre para el fichero de salida, gcc crea por defecto un fichero llamado a.exe. Esto diverge de la mayorнa de compiladores de DOS, que nombran al programa como el primer fichero fuente u objeto que encuentran. Se puede especificar un nombre de fichero salida con la opciуn -o (que trabaja junto con la opciуn -c o -S) de esta manera:

	gcc hello.c -o hello.exe

Este ejemplo es tambiйn la forma mбs simple de crear un ejecutable DOS desde un fichero fuente C. Si el programa consta de mъltiples ficheros fuente, puede compilarlos todos a la vez:

	gcc hello.c goodbye.c -o hello.exe

Tambiйn se puede compilar cada cуdigo fuente por separado y luego enlazarlos juntos en un programa:

	gcc -c hello.c
gcc -c goodbye.c
gcc hello.o goodbye.o -o hello.exe

La compilaciуn por separado es mбs rбpida cuando se esta depurando un programa, porque sуlo hay que recompilar los fuentes que han sido modificados. Cuando se usa make para gestionar un proyecto, йl se encarga de esto y sуlo recompila los mуdulos que hagan falta.

Traducido por: [Gorka's web] (10 diciembre 1999)
Revisado por: [www.cevallos.de] (24/4/2000)

  Copyright © 1997   by DJ Delorie     Updated Jan 1997