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.