IT | Compilation et profilage en C

Bonjour internaute !

Ici, simplement quelques notes sur la compilation et les options de profilage.

Compilation

Pour créer une bibliothèques statique : ar rcs lib<name>.a <file_1>.o <file_2>.o ... <file_n>.o

Pour créer une bibliothèque dynamique : on compile les objets devant faire parti de la bibliothèque partagée avec une option spéciale : gcc -c -fPIC fichier.o

l'option -fPIC empêche que l'objet partagé ne dépende de l'adresse a laquelle il est chargé...

Pour combiner des fichiers objets dans une bibliothèque partagée : gcc -shared -fPIC -o libtest.so file_1.o file_2.o

Pour lier une bibliothèque : g++ -o prog prog.o -L PATH -lamoi

l'option ajoute lib en préfixe et .a en sufixe au nom de bibliothèque spécifié. l'option -L permet de spécifier un emplacement pour la bibliothèque

 

Makefile :

$@ : Le nom de la cible

$< : Le nom de la première dépendance

$^ : La liste des dépendances

$? : La liste des dépendances plus récentes que la cible

$* : Le nom du fichier sans suffixe

 

Profilage de code avec valgrind et callgrind

Première chose à faire : il faut compiler son code C/C++ avec l'option -g qui permet de produire de l'information de deboggage dans un format natif du système.

g++ -g -Wall -std=c++11 -std=gnu++11 -c file_1.cpp
g++ -g -Wall -std=c++11 -std=gnu++11 -c file_2.cpp
g++ -g -Wall -std=c++11 -std=gnu++11 -c file_3.cpp
g++ -g file_1.o file_2.o file_3.o -o <Programme>  -lm

Ensuite, sous Ubuntu, utiliser le logiciel KCachegrind, qui permet d''ouvrir et d'anayser un fichier crée avec callgrind.

Pour générer ce fichier, la commande est :

valgrind --tool=callgrind <options> <Programme>

Exemple : time valgrind --tool=callgrind --compress-strings=no --dump-instr=yes --simulate-cache=yes --callgrind-out-file=testcryptonid.callgrind <Programme>

valgrind --tool=callgrind --compress-strings=no --dump-instr=yes --dump-line=yes <Programme>

Pour extraire le log dans un fichier et garder le nom des fonctions et des instructions utilisées lors de l'exécution.

Profilage memory leak

valgrind --tool=memcheck --leak-check=yes --track-origins=yes <Programme>

Zircon - This is a contributing Drupal Theme
Design by WeebPal.