1 votes

Comment voir les chemins de recherche de bibliothèque MacOS ?

Il y a deux Macs et l'un d'eux trouve un certain dylib lorsque je le dlopen et un autre ne le trouve pas. Il semble que les chemins de recherche des bibliothèques soient différents, mais DYLD_LIBRARY_PATH et DYLD_FALLBACK_LIBRARY_PATH sont vides sur les deux machines.

Comment puis-je voir quels chemins recherche dlopen ?

2voto

Jose Chavez Points 645

Vous trouverez la liste des chemins (c'est-à-dire la liste des variables contenant les chemins) dans la page de manuel de dyld. Vous pouvez afficher la page de manuel en exécutant la commande suivante dans le Terminal :

man dyld

Par exemple, vous pourriez avoir une différence avec LC_RPATH ou similaire. Je suggère d'imprimer l'environnement sur les deux machines et de comparer les notes.

Si vous venez d'un environnement Linux et que vous vous attendez à trouver un fichier comme /etc/ld.so.conf sur Linux, sachez qu'un tel fichier n'existe pas sur macOS.

Une autre raison de la différence entre le code pourrait être que l'un des environnements n'a pas mis à jour le cache dyld. Vous pouvez exécuter la commande suivante pour mettre à jour le cache :

update_dyld_shared_cache

N'oubliez pas de redémarrer ensuite pour réellement utiliser le cache.

En général, il semble que le programme que vous utilisez avec dlopen soit programmé de manière un peu étrange. En général, les programmes n'utilisent pas dlopen() avec divers dylib à des chemins non relatifs à l'exécutable, le chargeur ou l'rpath intégré au programme dans des cas rares.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X