2013-07-29 4 views
1

Je travaille sur une architecture de plugin simple pour mon application. Un plugin est un objet partagé avec une fonction "get interface" connue. J'accède au .so via dlopen/dlsym etc. Assez standard. Certains de mes plugins ont des fichiers .so supplémentaires qui doivent également être chargés. Ces fichiers peuvent être livrés avec un plugin très bien, mais j'ai besoin de l'application pour savoir où/comment les charger. Donc, ma question est: comment ajouter un répertoire de plugin particulier à la liste des endroits où chercher des bibliothèques? Je ne peux pas définir LD_LIBRARY_PATH avant de démarrer l'application, car le plugin sera chargé plus tard. Sinon, ai-je besoin de chaque plugin pour fournir explicitement la liste des dépendances dans un type de fichier manifeste, afin que je puisse les charger avec dlopen() en premier? Merci. Edit: pour clarifier, les répertoires des plugins ne sont pas connus avant le démarrage de l'application, donc je ne peux pas définir LD_LIBRARY_PATH à ce moment là.Linux: modifier LD_LIBRARY_PATH à l'exécution

+0

Vous pouvez et devez lier votre fichier plugins '* .so' avec les bibliothèques partagées requises' gcc -Wall -O -shared -fPIC plugin.c -lsomelibrary -o plugin.so' –

+0

Je le fais déjà, mais le problème se pose à l'exécution avec l'environnement de l'application ne sachant pas où vit libsomelibrary.so - c'est la chose que je dois être en mesure de spécifier après le démarrage de l'application. – gimmeamilk

Répondre

0

Selon this linux évalue LD_LIBRARY_PATH avant de démarrer l'application, il n'est donc pas conscient des modifications que vous apportez à l'exécution.

Questions connexes