wiki:InsiaProgCTp5

Sommaire

TP5 - Bibliothèques statiques et dynamiques

1. Bibliothèque statique

Créez une bibilothèque à partir du programme chaine.c du TP3, en créant un fichier epelle.h pour l'interface d'une part, et un fichier epelle.c pour l'implémentation d'autre part.

Compilez ce programme en un fichier objet epelle.o. Puis créez une "archive statique" libepelle.a à partir de ce fichier objet.

Créez un programme simple statique.c qui appelle la fonction epelle (en lui passant argv[1] par exemple), en le liant statiquement à la bibliothèque libepelle.a.

2. Bibliothèque dynamique

Repartez du couple epelle.h/epelle.c définis en 1., mais compilez l'ensemble en une bibliothèque dynamique libepelle.so.

Créez un programme dynamique.c identique à statique.c, mais en le compilant liez-le à la bibliothèque dynamique libepelle.so. Comment pouvez-vous lancer ce programme ?

3. Interception d'appel de bibliothèque

Ecrivez une bibliothèque myfopen.c qui définit une fonction fopen identique à la fonction standard de <stdio.h>, mais qui se contente d'afficher le nom du fichier qui doit être ouvert, et renvoie NULL. Compilez ce fichier en une bibliothèque dynamique libmyfopen.so. Comment invoquez-vous cette bibliothèque pour intercepter les appels du programme ls fait à la fonction standard fopen ?

Modifiez votre programme myfopen.c pour qu'il appelle la fonction originale fopen, et se contente de tracer l'appel au passage.

Last modified 14 years ago Last modified on Nov 20, 2006, 3:07:45 PM