dyld: la bibliothèque n'est pas chargée, même si le chemin est spécifié dans le fichier Makefile

3

J'ai un programme Fortran que je lance sur macOS 10.12.6. Le code est compilé à l’aide d’un Makefile, dans lequel toutes les bibliothèques incluses ont également leur chemin. Pour une des bibliothèques (et une seule), mon exécutable ne semble pas pouvoir le trouver. Mon code est compilé correctement mais je reçois cette erreur d'exécution au début du programme:

dyld: Library not loaded: libslatec.so
  Referenced from: path_to_PWD/exe/executable
  Reason: image not found

Voici comment j'ajoute ma bibliothèque:

LIB_SLATEC = -L$(HOME)/usr/lib/slatec/lib -lslatec

Si je fais que ls $HOME/usr/lib/slatec/libje reçois: libslatec.so.

Courir otool -L path_to_exe | grep slatecje reçois: libslatec.so (compatibility version 0.0.0, current version 0.0.0). Je vois qu'il n'y a pas de chemin spécifié ici. Si je copie la bibliothèque dans mon lecteur, $PWDle code s'exécute comme prévu. J'ai également essayé d'ajouter le chemin d'accès à la bibliothèque LD_LIBRARY_PATHmais cela n'a rien changé.

Une idée du problème?

solalito
la source
pouvez-vous vérifier les autorisations sur la bibliothèque et chaque répertoire dans le chemin d'accès à la bibliothèque? sinon *.sosont un peu rares, et sont généralement à la place *.dylibsur macOS ...
thrig
@thrig J'ai installé toutes les bibliothèques, y compris celle-ci, dans mon dossier $ HOME / usr / lib afin de disposer de toutes les autorisations nécessaires.
Solalito
Comment le fichier.so a-t-il été créé?
Marc
@Mark, j'ai téléchargé les fichiers source à partir d'ici: netlib.org/slatec et les ai compilés après l'article: stackoverflow.com/questions/46200711/…
solalito Le
Cela fonctionne si vous installez dans / usr / local / lib car vous êtes dans un répertoire différent du chemin de chargement standard, vous devez lire developer.apple.com/library/content/documentation/… ou utiliser des bibliothèques statiques - qui pourrait signifier supprimer le .so et laisser les fichiers .a
Mark