Ne trouve pas les bibliothèques dynamiques à l'exécution

Fabllot

Membre enregistré
6 Juillet 2006
8
0
Bonjour,

J'ai un projet qui comprend une application, une bibliothèque dynamique (les deux développées par mes soins) et qui sont liées à un certains nombres d'autres bibliothèques dynamiques, et à des frameworks.
Les frameworks & bilbotheques externes sont installées sur le système (dans /Library/frameworks & /usr/local/lib)

La compilation se passe très bien (Gcc ou XCode), cependant lors du lancement de mon application il ne parvient pas à trouver ma bibliothèque dynamique. Si je la mets dans /usr/local/lib, l'application se lance et fonctionne correctement.

Le soucis est que je ne peux pas garder cette dernière solution puisque je souhaite faire un déploiement de mon application vers d'autres Mac...

Pour les frameworks j'arrive à m'en sortir grâce à un outil fourni par Qt (deployqt), mais j'ai des soucis pour les bibliothèques !

Ma question est simple : Comment intégrer les bibliothèques dynamiques à un bundle d'application, pour que l'installation puisse se faire sans ajout de fichiers dans les répertoires systèmes ?

Merci de votre aide !
 
Pour intégrer un framework à un bundle, il faut ajouter à ta compilation un phase "Copy file" (voir le menu Project, New Build Phase). Par contre je ne sais pas si cela fonctionne avec les dylib. Une solution est de recompiler cette librairie sous forme d'un framework.
 
Pour intégrer un framework à un bundle, il faut ajouter à ta compilation un phase "Copy file" (voir le menu Project, New Build Phase).
Pour le framework, j'avais réussi (avec deployqt)

Une solution est de recompiler cette librairie sous forme d'un framework.
Ceci est à eviter, puisque ce sont des bibliothèques externes que je n'ai pas créées! (ex : SDL, glib) et même si j'ai les sources, la recompilation de ces bibliothèques est à proscrire.

Mais j'ai trouvé une solution : il faut en fait utiliser l'outil install_name_tool (très bon tutoriel sur ... qt ! http://doc.trolltech.com/qq/qq09-mac-deployment.html#sharedlibraries).

et là plus de problèmes!