Vous essayez de manipuler ça pour que vos programmes soit plus utilisables ?
Ok, c'est pas SI compliqué .
Tout d'abord, pas de baratin, voilà LA page que vous DEVEZ consulter pour comprendre tout ça rapidement et simplement :
http://hiko-seijuro.developpez.com/articles/bibliotheque-dynamique
MAis, ...croyez-moi, ça va pas vous suffire quand même.
Y'a un souci majeur : les dépendances des librairires dynamiques qu'on utilise.
Voici mon exemple.
class c1 qui est tranformée en librairie l1
class c2 et c3 qui sont transformées en l2
dans mon main,
je load la librairie l2, et j'utilise c2,
je load la librairie l1, et j'utilise c1
je fais ces loads à partir du chemin absolu des librairies car ce sont les miennes et elles sont pas enregistrées dans usr/lib ou je ne sais quel autre.
(ou j'utilise une factory comme c'est proposé dans le tuto (qui est super hein ;) )).
Ma classe c1 elle hérite d'une classe c3.
Donc quans je load ma librairie l1, mon appel à dlfcn va automatiquement chercher à loader la librairie l2 dont dépend l1.
Et là GROS problème car dlfcn cherche les chemins "systeme" et ne trouve donc plus ma librairie l2.
Solution :
vous utilisez la commande :
env LD_LIBRARY_PATH=$LD_LIBRARY_PATH:le_chemin_vers_vos_librairies ./votre_executable
Vous pouvez mettre ça dans un script bash bien sûr ;).
Il vous reste uniquement à indiquer les chemins vers vos librairies perso pour que dlfcn les trouve lors de l'exécution.
Voilou,
enjoy
Inscription à :
Publier les commentaires (Atom)
Aucun commentaire:
Enregistrer un commentaire