$ g++ fichier_source1.o fichier_source2.o … -o fichier_executable
Comme nous le soulignions en introduction, certains compilateurs peuvent réaliser l’ensemble
de ces étapes en une seule opération. Le compilateur C++ peut ainsi compiler séparément l’ensemble
des chiers sources et réaliser l’édition de liens via la commande
$ g++ fichier_source1.cpp fichier_source2.cpp … -o fichier_executable
1.2 Options de compilation
Le compilateur C++ autorise l’utilisation d’une multitude d’options concernant aussi bien l’optimisation
du processus de compilation que la compréhension et la résolution des éventuels conits. L’ensemble
des options disponibles pour la commande g++ peut être obtenu à l’aide de l’instruction man g++a.
Parmi les multiples options disponiblesb, la liste ci-dessous recense les plus couramment utilisées:
• l’option -Ichemin indique au compilateur où sont localisés les chiers d’entêtes nécessaires
à la compilation séparée du programme. Par défaut, le compilateur recherche ces chiers
localement et dans le répertoire /usr/include,
• l’option -Lchemin est essentiel lors du processus d’édition de liens an d’indiquer au compi-
lateur où se situent les librairies externes. Soit le chemin d’accès est complet et pointe donc
vers la librairie concernée, soit le chemin d’accès indique uniquement le répertoire où sont
localisées les librairies, auquel cas il est nécessaire de préciser le nom de la librairie à utiliser
via l’option -lnom_librairie,
• l’option -W permet l’activation des messages de mise en garde (le Wse référant à l’expression
warning). Ces warnings n’empècheront pas l’exécution du programme nal mais fournissent
des indications voir des conseils en relation avec certaines parties du code. Diérents niveaux
de mise en garde sont accessibles, le plus complet étant -Wall -Wextra,
• l’option -Didentificateur permet la dénition d’identicateur à fournir lors du processus de
précompilation. L’activation des directives de préprocesseur peut se faire par ce biais ce
qui permettra au compilateur d’insérer, de supprimer ou de modier les portions de code
relatives à cette directive. À titre d’exemple, il pourra s’avérer utile lors d’une phase de
débogage d’un programme, de dénir un identicateur __DEBUG__ qui achera des informa-
tions complémentaires lors de l’exécution du programme. An d’inclure ces instructions
supplémentaires au sein du code, la commande de compilation deviendra g++ -D__DEBUG__
...,
• an de proter des processeurs multi-cœurs présents dans les machines récentes, l’option -On
permet l’optimisation de la compilation en répartissant la charge de compilation sur ncœurs.
1.3 Directives de préprocesseur
Comme nous l’avons rappelé en introduction à cette annexe, la compilation d’un programme se
déroule en trois phases. La première est exécutée par le préprocesseur et vise à remplacer les
directives de compilation par des instructions C++ . Dans les faits, le préprocesseur recherche des
directives de compilation repérées en début de ligne par le symbole #et se terminant avec la n
de la ligne. La syntaxe est ainsi
#directive [paramètres]
aman, pour manual, constitue l’instruction unix permettant de connaître les diérents modes de fonctionnement
d’une commande donnée
bpour plus d’informations, le site internet http://www.antoarts.com/the-most-useful-gcc-options-and-extensions/ pro-
pose une liste des options de g++ les plus utiles.
2