2 votos

¿Cómo depurar las bibliotecas que faltan en MacOS?

Estoy intentando averiguar por qué un binario no enlaza una biblioteca compartida. En Linux la forma estándar de hacer esto es LD_DEBUG=libs que muestra la ruta de todas las bibliotecas enlazadas, pero esto no produce ninguna salida para mí. He leído varios artículos que recomiendan esto en MacOS, así que ¿fue eliminado o hay algún truco para usarlo? Estoy ejecutando en Catalina y he probado tanto bash como zsh shells.

Ejemplo de MacOS:

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

Ejemplo de 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 Puntos 2266

Prueba esto:

$ 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)

(esto es en MacOS 10.11.6 pero debería funcionar en versiones más nuevas)

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X