next up previous contents index
Next: Qu'est-ce qu'un fichier Up: Comment programmer? Previous: Compilation de programmes

L'intérieur d'un compilateur

Le compilateur est en fait un driver qui appelle d'autres commandes pour créer un fichier exécutable a.out.

Les compilateurs C, fortran et pascal possèdent l'option -v qui affiche les phases par lesquelles le compilateur passe. Compiler main.c et func.c avec l'option -v produit la sortie suivante sur une station de travail HP 9000s700:

$ cc -Aa -v main.c func.c
  -----------------------
cc: CCOPTS is not set.
main.c:
/lib/cpp.ansi main.c /tmp/ctmAAAa09043 -D__hp9000s700 -D__hp9000s800\
-D__hppa -D__hpux -D__unix -D_PA_RISC1_1  
cc: Entering Preprocessor.
/lib/ccom /tmp/ctmAAAa09043 main.o -Oq00,al,ag,cn,Lm,sz,Ic,vo,lc\
,mf,Po,es,rs,sp,in,pi,fa,pe,Rr,Fl! -Aa 
func.c:
/lib/cpp.ansi func.c /tmp/ctmAAAa09043 -D__hp9000s700 -D__hp9000s800\
 -D__hppa -D__hpux -D__unix -D_PA_RISC1_1  
cc: Entering Preprocessor.
/lib/ccom /tmp/ctmAAAa09043 func.o -Oq00,al,ag,cn,Lm,sz,Ic,vo,lc,mf\
,Po,es,rs,sp,in,pi,fa,pe,Rr,Fl! -Aa 
cc: LPATH is /lib/pa1.1:/usr/lib/pa1.1:/lib:/usr/lib
/bin/ld /lib/crt0.o -u main -Fb /usr/lib/uccom main.o func.o -lc 
cc: Entering Link editor.

        Cet exemple montre que le driver cc appelle le préprocesseur (/lib/cpp) pour chaque fichier source, puis appelle le compilateur C (/lib/ccom) pour créer les fichiers objets. Enfin, le driver appelle l'éditeur de lien (/bin/ld) sur les fichiers objets créés par le compilateur ( main.o et func.o).




Wed Jun 25 13:24:35 MET DST 1997