La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1 Programmation Système et Réseau (sous Linux) T. KOUKI

Présentations similaires


Présentation au sujet: "1 Programmation Système et Réseau (sous Linux) T. KOUKI"— Transcription de la présentation:

1 1 Programmation Système et Réseau (sous Linux) T. KOUKI

2 2 Plan du module Chapitre 0 : Rappels et outils de développement. Chapitre 1 : La gestion des processus. Chapitre 2 : La gestion des signaux. Chapitre 3 : La gestion des entrées/sorties. Chapitre 4 : Programmation réseau avec les sockets.

3 3 Chapitre 0: Rappels et outils de développement. Programme et arguments. La commande gcc et ses principales options. Création des librairies ou bibliothèques. Utilitaires intéressants: strip, nm, strace, …

4 4 Programme & arguments int main(int argc, char **argv, char **arge) –argc : argument count : Compte le nombre d'arguments passés au programme à l'exécution. –argv : argument variable : Tableau de chaînes de caractères : Contient la liste des paramètres passés au programme à l'exécution. –arge : argument environment : Tableau de chaînes de caractères : Contient l'environnement de travail de l'user. Exemple : Écrire un programme qui calcule et affiche le factoriel d'un entier passé comme paramètres.

5 5 La commande gcc et ses principales options gcc: Gnu C Collection : Collection C de GNU Par défaut : gcc génère un binaire exécutable a.out. Accepte plusieurs options; à titre d'exemple : -g  Ne pas effacer les informations de débogage. -c  Compiler uniquement. -o  Output : Générer l'exécutable. -E  S'arrêter après le prétraitement (pas de compilation) -S  S'arrêter après la compilation (pas d'assemblage) -Wall  Afficher tous les messages d'avertissement.

6 6 Extraire le code de la fonction et le recopier dans le binaire exécutable  Chargement direct en mémoire du programme à exécuter. Les bibliothèques correspondantes sont construites avec l'utilitaire ar et ont.a comme extension.  Le code de la fonction est chargé en mémoire centrale autant de fois qu'il y a de processus qui l'utilisent.  Les applications construites sont figées.  Si la bibliothèque est modifiée  les applications déjà construites utiliseront toujours l'ancienne version. Création de bibliothèques statiques

7 7 Création de bibliothèques statiques (suite) Compile: gcc -Wall -c ctest1.c ctest2.c Créer la bibliothèque "libctest.a":  $ar -cvq libctest.a ctest1.o ctest2.o Lister les fichiers contenus dans la bibliothèque  $ar -t libctest.a Lier avec la bibliothèque:  $gcc -o executable-name prog.c libctest.a  $gcc -o executable-name prog.c - L/path/to/library-directory -lctest

8 8 ctest1.c void ctest1(int *i) { *i=100; } void ctest2(int *i) { *i=90; } Création de bibliothèques statiques (suite)

9 9 $vi prog.c #include void ctest1(int *); void ctest2(int *); int main() { int x; ctest1(&x); printf("Valx=%d\n",x); return 0; } $ Création de bibliothèques statiques (suite)

10 10 Remarque. Les bibliothèques ".a" sont conceptuellement les mêmes que les bibliothèques statiques ".lib" du Visual C++ (ou du d'un compilateur C classique sous DOS/Windows) Création de bibliothèques statiques (suite)

11 11 Création de bibliothèques dynamiques Motivation : ? Comment générer un shared object: (Dynamically linked object library file.) Créer le programme objet. Créer la bibliothèque. Optionnellement: Créer une version par défaut en utilisant un lien symbolique.

12 12 gcc -fPIC -c objfile1.c gcc -fPIC -c objfile2.c gcc -fPIC -c objfile3.c gcc -shared -o libmylib.so objfile1.o objfile2.o objfile3.o gcc -o foo -L. -lmylib foo.c Création de bibliothèques dynamiques (suite)

13 13 Commandes utiles strip : Éliminer les symboles des fichiers objets. nm : Afficher la table des symboles. –Principaux symboles (man nm) strace : Ensemble d'appels système + Ensemble des signaux reçus. gprof : Détailler combien de temps processeur dure chaque fonction et combien de fois elle a été appelée (profil plat) ainsi que le nombre de fois où elle a été appelée par différentes fonctions (graphe d'appels)  Fonctions prenant la majorité du temps processeur  les optimiser.

14 14 Commandes utiles (suite) gdb: gnu debugger : Outil de mise au point de programmes.  Intègre pas mal de fonctionnalités : notamment l'exécution étape par étape, visualisation du contenu des variables, … $ man gdb Commandes intéressantes : (voir document joint)


Télécharger ppt "1 Programmation Système et Réseau (sous Linux) T. KOUKI"

Présentations similaires


Annonces Google