J'ai regardé quelques questions connexes et n'arrive pas à trouver une solution pour moi-même.Xcode, building et dylibs
Fondamentalement, j'utilise le libmp3lame.dylib dans mon projet Xcode. Le processus d'installation de lame a produit le .dylib et l'a placé dans usr/local/lib et pour obtenir Xcode pour construire et exécuter le projet j'ai changé les chemins de recherche de bibliothèque pour inclure le dossier ci-dessus. Cela fonctionne bien.
Maintenant, il s'agit de produire une version et je veux inclure le .dylib dans le paquet de sorte que l'utilisateur n'a pas à supporter une phase d'installation ou quelque chose de similaire. J'ai créé une phase de copie de fichiers de la cible et cela déverse le fichier .dylib dans le dossier Frameworks dans le contenu de l'ensemble. Cependant, lancer otool sur le binaire montre qu'au lieu d'utiliser le .dylib à l'intérieur du bundle, le compilateur l'a lié à la version usr/local/lib (même si je supprime cette version). En regardant les autres résultats dans la sortie otool, j'ai d'autres frameworks liés à l'intérieur du bundle, mais pas le .dylib. En regardant les propriétés pour ces deux cadres et le .dylib dans Xcode, je ne vois pas de différences autres que le type de fichier. Ma recherche suggère que j'ai besoin d'utiliser rpath ou similaire, mais je n'ai aucune idée de l'endroit où l'appliquer dans Xcode.
Je suppose que la partie pertinente de ld est: "-lmp3lame.0.0.0". Est-ce que le -l traite avec la partie lib du nom de fichier lui-même? Sinon, je suis confus car le nom de fichier est libmp3lame.0.0.0.dylib. – Septih
Ah, c'est vrai. Je pense que le problème est qu'il cherche un libmp3lame.dylib dans les répertoires définis plus tôt dans la construction (les chemins de recherche de bibliothèque), mais la phase de copie de fichiers ne place pas le dylib dans le paquet jusqu'à ce que le ld. Donc, un nouveau dilemme est de savoir comment lui dire explicitement de chercher la bibliothèque là-bas plutôt que de simplement en chercher un dans quelques dossiers. Encore confus quant à pourquoi il lié au dossier usr/local/lib quand j'ai supprimé le .dylib là bien que ... – Septih