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

Programmation Système et Réseau (sous Linux)

Présentations similaires


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

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

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 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 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 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 Création de bibliothèques statiques
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.

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 Création de bibliothèques statiques (suite)
ctest1.c void ctest1(int *i) { *i=100; } void ctest2(int *i) { *i=90; }

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

10 Création de bibliothèques statiques (suite)
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)

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 Création de bibliothèques dynamiques (suite)
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

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 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 "Programmation Système et Réseau (sous Linux)"

Présentations similaires


Annonces Google