2 votes

Comment déboguer les bibliothèques manquantes sous MacOS ?

J'essaie de comprendre pourquoi un binaire ne lie pas une bibliothèque partagée. Sous Linux, la manière standard de faire cela est LD_DEBUG=libs qui montre le chemin de toutes les bibliothèques liées, mais cela ne produit aucun résultat pour moi. J'ai lu plusieurs articles recommandant cette fonction sous MacOS, alors a-t-elle été supprimée ou existe-t-il une astuce pour l'utiliser ? Je fonctionne sous Catalina et j'ai essayé les shells bash et zsh.

Exemple sous MacOS :

$ LD_DEBUG=libs uptime
19:18  up 10:06, 4 users, load averages: 2.00 2.21 2.04

Exemple sous Linux :

$ LD_DEBUG=libs uptime
     25453: find library=libprocps.so.7 [0]; searching
     25453:  search cache=/etc/ld.so.cache
     25453:   trying file=/lib/arm-linux-gnueabihf/libprocps.so.7
     25453: 
     25453: find library=libdl.so.2 [0]; searching
     25453:  search cache=/etc/ld.so.cache
     25453:   trying file=/lib/arm-linux-gnueabihf/libdl.so.2
     25453: 
     25453: find library=libc.so.6 [0]; searching
     25453:  search cache=/etc/ld.so.cache
     25453:   trying file=/lib/arm-linux-gnueabihf/libc.so.6
     25453: 
     25453: find library=libsystemd.so.0 [0]; searching
     25453:  search cache=/etc/ld.so.cache
     25453:   trying file=/lib/arm-linux-gnueabihf/libsystemd.so.0
     25453: 
     25453: find library=librt.so.1 [0]; searching
     25453:  search cache=/etc/ld.so.cache
     25453:   trying file=/lib/arm-linux-gnueabihf/librt.so.1
     25453: 
     25453: find library=liblzma.so.5 [0]; searching
     25453:  search cache=/etc/ld.so.cache
     25453:   trying file=/lib/arm-linux-gnueabihf/liblzma.so.5
     25453: 
     25453: find library=liblz4.so.1 [0]; searching
     25453:  search cache=/etc/ld.so.cache
     25453:   trying file=/lib/arm-linux-gnueabihf/liblz4.so.1
     25453: 
     25453: find library=libgcrypt.so.20 [0]; searching
     25453:  search cache=/etc/ld.so.cache
     25453:   trying file=/lib/arm-linux-gnueabihf/libgcrypt.so.20
     25453: 
     25453: find library=libpthread.so.0 [0]; searching
     25453:  search cache=/etc/ld.so.cache
     25453:   trying file=/lib/arm-linux-gnueabihf/libpthread.so.0
     25453: 
     25453: find library=libgpg-error.so.0 [0]; searching
     25453:  search cache=/etc/ld.so.cache
     25453:   trying file=/lib/arm-linux-gnueabihf/libgpg-error.so.0
     25453: 
     25453: 
     25453: calling init: /lib/arm-linux-gnueabihf/libpthread.so.0
     25453: 
     25453: 
     25453: calling init: /lib/arm-linux-gnueabihf/libc.so.6
     25453: 
     25453: 
     25453: calling init: /lib/arm-linux-gnueabihf/libgpg-error.so.0
     25453: 
     25453: 
     25453: calling init: /lib/arm-linux-gnueabihf/libgcrypt.so.20
     25453: 
     25453: 
     25453: calling init: /lib/arm-linux-gnueabihf/liblz4.so.1
     25453: 
     25453: 
     25453: calling init: /lib/arm-linux-gnueabihf/liblzma.so.5
     25453: 
     25453: 
     25453: calling init: /lib/arm-linux-gnueabihf/librt.so.1
     25453: 
     25453: 
     25453: calling init: /lib/arm-linux-gnueabihf/libsystemd.so.0
     25453: 
     25453: 
     25453: calling init: /lib/arm-linux-gnueabihf/libdl.so.2
     25453: 
     25453: 
     25453: calling init: /lib/arm-linux-gnueabihf/libprocps.so.7
     25453: 
     25453: 
     25453: calling init: /usr/lib/arm-linux-gnueabihf/libarmmem-v7l.so
     25453: 
     25453: 
     25453: initialize program: uptime
     25453: 
     25453: 
     25453: transferring control: uptime
     25453: 
 19:17:22 up 22:36,  3 users,  load average: 0.00, 0.00, 0.00

4voto

Igor Zelaya Points 2266

Essayez ça :

$ otool -L /usr/bin/uptime
/usr/bin/uptime:
    /usr/lib/libresolv.9.dylib (compatibility version 1.0.0, current version 1.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1225.0.0)

(c'est sur MacOS 10.11.6 mais cela devrait fonctionner sur les versions plus récentes)

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