2017-08-22 9 views
2

J'essaye de construire un framework avec Autotools sur MacOS. Ce framework contient une librairie, appelons-la libmytools.dylib, et un exécutable qui utilise la librairie. Ce que je veux, c'est relier cette bibliothèque dynamiquement à l'exécution.Autotools - libtool: lien: -rpath avec @executable_path sur MacOS

L'exécutable est généralement installé à /Library/Frameworks/mytools.Framework/Versions/Current/Commands/mytools La bibliothèque est généralement installé à /Library/Frameworks/mytools.Framework/Versions/Current/Libraries/libmytools.dylib

Dans le cas où le cadre est installé à cet endroit, tout fonctionne très bien, mais quand le cadre est pas installé sur la machine, mais à la place il est seulement intégré dans un autre projet, la bibliothèque ne peut pas être trouvée.

Ce que je besoin est un soi-disant « RUNPATH bibliothèque à charge » comme décrit ici: https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/RunpathDependentLibraries.html

Alors, je me ajoutait mytools_LDFLAGS = -rpath @executable_path/../Libraries au makefile.

Mais malheureusement libtool refuse de lier mon exécutable avec le -rpath dynamique et montre l'erreur suivante: libtool: link: only absolute run-paths are allowed.

J'ai aussi essayé mytools_LDFLAGS = -dynamic -rpath @executable_path/../Libraries mais le résultat est le même ...

Qu'est-ce que je fais faux??

Répondre

4

Ceci est la conception actuelle de libtool. This thread de la liste des correctifs libtool peut avoir une suggestion qui fonctionnera pour vous. La suggestion est:

build as normal and then postprocess using install_name_tool

Si vous ne l'aimez pas cette suggestion, il peut être possible d'adapter le patch hacky qui a commencé ce fil à travailler pour vous et appliquez le patch généré libtool dans le cadre de bootstrap.sh configuration.

+0

Merci beaucoup! ** install_name_tool ** était l'indice dans la bonne direction :) – ndreisg