
Le cas suivant présente le même cas d'utilisation d'une bibliothèque mais dans le cas d'une bibliothèque dynamique (shared librarie) et non plus statique.

1- Compilez la bibliothèque et installez la comme précédemment.
2- Modifiez le programme de project (ajoutez la fonction de la bibliothèque) ainsi que le Makefile de manière similaire à l'exemple précédent.
Assurez vous que le programme main compile correctement et que le fichier executable soit créé.

3- Tentez de lancer l'executable main, et observez que cette fois celui-ci ne se lance plus.
Une erreur indique que la librairie dynamique libmy_function.so n'est pas trouvée.

En effet, le programme main a besoin d'accéder au fichier libmy_function.so afin de ce lancer. Ce fichier n'étant pas dans les répertoire standard des librairies, le système ne peut pas lancer l'exécutable.

Une manière d'observer quelles librairies dynamique sont nécessaires, et quels fichiers leur sont associé est l'utilisation de la commande ldd
ldd ./main

Observez que la librairie libmy_function.so est bien la seule à ne pas être trouvée.

4- Afin d'ajouter un répertoire pour la recherche de librairie dynamique au moment de l'exécution, il est possible de modifier la variable globale LD_LIBRARY_PATH
Soit ZZ le chemin global (depuis la racine) vers le répertoire lib (inclu) de votre librairie.

Tapez la commande suivante dans la ligne de commande utilisé pour exécuter le programmer main:
export LD_LIBRARY_PATH=ZZ:$LD_LIBRARY_PATH

Observez que cette fois la commande
ldd ./main
indique que la bibliothèque est trouvée.

Lancez le programme exécutable et vérifier son bon fonctionnement.


Notez que cette fois, la bibliothèque est chargée à chaque lancement de main. Si la bibliothèque est modifiée, alors le comportement de main le sera également sans avoir à recompiler le fichier main.cpp
