Compilation GCC
Compilation GCC
Compilation GCC
Dans
une
première
étape
dite
de
«
compilation
»
proprement
dit,
on
va
compiler
les
uns
après
les
autres
les
fichiers
source
.c
de
chacun
des
modules.
Cette
étape
de
compilation
produit,
pour
chaque
fichier
.c,
un
fichier
.o
de
même
nom
que
le
fichier
.c
qui
contient
une
traduction
du
code
C
en
langage
machine
binaire.
Un
fichier
objet
.o
n’est
pas
exécutable
:
il
ne
contient
que
la
traduction
du
code
du
module,
dont
les
appels
des
fonctions
d’autres
modules,
mais
en
aucun
cas
le
binaire
de
ces
fonctions.
Dans
une
second
étape,
dite
«
d’édition
des
liens
»
(linking),
le
compilateur
va
assembler
l’ensemble
des
fichiers
objets
.o
issus
de
l’étape
de
compilation
ainsi
que
les
binaires
des
librairies
qu’utilise
le
programme.
Le
résultat
est
un
fichier
binaire
exécutable,
qui
contient
toutes
les
informations
nécessaires
au
lancement
du
programme.
C’est
lors
de
cette
seconde
étape
que
le
compilateur
vérifie
qu’il
dispose
bien
des
codes
binaires
de
toutes
les
fonctions
utilisées
par
le
programme.
L’étape de compilation est lancée avec l’option –c du compilateur gcc. Par exemple :
$ gcc –c unModule.c
produira
(si
il
n’y
a
pas
d’erreur
de
compilation)
un
fichier
binaire
unModule.o
L’étape d’édition des liens est lancée avec l’option –o du compilateur gcc.
Par
exemple
:
$ gcc -o monProgramme unFichier.o unAutre.o unTroisieme.o -lm
assemble
les
binaires
des
modules
trois
modules
ainsi
que
le
binaire
de
la
librairie
mathématique
(«
m »)
et
produira
(si
il
n’y
a
pas
d’erreur)
un
fichier
binaire
exécutable
nommé
monProgramme.
1
Certains
d’entre
vous
ne
le
savent
peut
être
pas
encore
:
dans
des
cas
simples
tels
que
ceux
que
vous
avez
vu en première année, les deux étapes sont parfois regroupées. C’est fini, désormais !
Fiche
informatique
–
programmation
en
C
-I<chemin> Ajoute
<chemin>
aux
répertoires
dans
lesquels
gcc
ira
chercher
des
fichiers
headers
.h.
Exemple
:
-ansi Indique
que
le
<standard>
(la
révision)
du
langage
C
utilisé
est
le
C
est
la
version
«
ainsi
»
(première
version
normalisée
du
C,
datant
de
1989).
-std=<standard> Indique
le
nom
du
<standard>
(de
la
révision)
du
langage
C
à
utiliser.
Souvent
<standard>
sera
c89
(norme
«
ansi
»
:
le
C
de
base)
ou
c99
(plus
courant
aujourd’hui).
Fiche
informatique
–
programmation
en
C
3. Exemple
On
considère
un
programme
réalisant
le
produit
de
(i+2)
par
la
racine
carré
de
j.
• La somme i+2 est réalisée par une fonction f, qui est écrite dans le fichier f1.c
• La
fonction
g,
écrite
dans
le
fichier
f2.c,
se
contente
appelle
la
fonction
racine
carrée
(sqrt)
de
la
librairie
mathématique
du
C.
• Le programme principal main, qui calcule f(i)*g(j), se trouve dans le fichier p1.c
On veut construire le programme binaire exécutable qui regroupe tout celà.
2 étapes : compilation de chacun des fichier source .c puis édition des liens.
Ainsi,
pour
créer
le
fichier
binaire
exécutable
en
mode
«
debug
»,
il
faut
lancer
successivement
les
commandes
suivantes
dans
le
Terminal
:
gcc -c p1.c -g
gcc -c f1.c -g
gcc -c f2.c -g
gcc –o monprog p1.o f1.o f2.o -lm
Notez que le lien avec la librairie standard du C (libc) est sous entendu.
L’utilitaire make et le fichier Makefile permettent de simplifier cette tache.