pour programmer on utilise 3 outils
le compilateur de fichier le compilateur de plusieurs fichiers (projets) un programme de debogage
GCC#
la commande g++ compile un fichier cpp en binaire
cependant nous ne voulons pas systematiquement un fichier binaire final:
- car nos programmes sont separes en plusieurs fichiers separes
- mais aussi la flemme de recompiler notre projet des quon change quun seul fichier
=> on utilise alors plusieurs fichiers objets
quelques flags utile#
-Wall: affiche tout les messages de prevention -c sarrete a la compilation dun ficher objet -o precise le nom de la sortie -I precise le nom dun repertoire avec des librairies (sous forme de de nom de dir) a inclure (chemin) -l precise un fichier libraire -L precise un repertoire avec des fichiers libraires => les librairies installes avec apt etc sont dans /usr/include -ggdb inclus des informations de debug
scenarios possibles#
g++ exemple.cpp -o exec # un fichier cpp en son binaire associe g++ exemple.o -o exec # des fichier o en leur binaire associe
Compilation par fichier#
un Makefile est un fichier qui facilite la compilation de plusieurs fichiers
regles#
dans un makefile on definit la plupart du temps des regles de compilation
variables#
Utile pour eviter la redondance!
Syntaxe: nom_var = valeur
commandes lies au makefile#
make: produit la premiere regle (implique de concevoir notre makefile de sorte a taper juste ca) make nom_regle: produit la regle nom_regle
la compilation automatique (via IDE)#
On utilise un CMake! (autre regle, autre syntaxe, car objectifs differents) Le CMake a l’avantage de creer une compatibilite interplatforme
debuggage#
on est souvent confrontes a des bugs: on va utiliser le principe de deboguer
Deboguer, consiste a analyser notre programme lors de son execution. On peut ainsi identifier quelle ligne pose probleme, letat des variables au cours de l’execution
bugs#
liste non exhaustive
erreur de segmentation#
signifie que notre programme a essaye dacceder a de la memoire auquel il navait pas acces
debugger#
nous aide a visualiser lexecution de notre programme
commandes#
dabord on lance notre debugger: gdb nom executable
ensuite une invite de commande nous est propose:
run (commence lexecution de notre programme) backtrace (localise la fonction et la ligne de la fonction si ya un bug: realise la trace des appels de fonction) where (pareil sans forcement pour un bug) list (affiche les lignes qui posent un probleme) break (permets de placer un point ou la visualisation sarrete) tbreak (pareil ?) next (prochaine ligne) step (prochain appel de fonction) continue (reprends lexecution) affiche la variable