7 votos

¿Cómo encontrar qué biblioteca compartida falta?

Cuando utilizo ldd en Linux me dice de inmediato si algo falta, es decir,

ldd -d some_lib.so
    libexample.so => not found
    libex.2.so => not found
    libm.so.6 => /lib/libm.so.6 (0xf5860000)
    libdl.so.2 => /lib/libdl.so.2 (0xf785b000)
    libc.so.6 => /lib/libc.so.6 (0xf78a9000)
    /lib/ld-linux.so.2 (0x46b4c000)

En Mac OS no es ldd y recomiendan el empleo de otool -L, pero que muestra que las bibliotecas compartidas son de esperar, no el tiempo o no están ahí. Otro enfoque sería utilizar dtruss, pero requiere de sudo, y menos en mi experiencia, la aplicación se comporta de manera muy diferente cuando se dtrussed, y se produce de una forma totalmente diferente de la razón (y antes de que se vuelva a intentar cargar la problemática .dylib).

Así que si usted sospecha que una biblioteca compartida falta, ¿cuál es el enfoque estándar para encontrar lo que uno es en el Mac?

4voto

Jose Chavez Puntos 645

La forma más fácil es simplemente para ejecutar el programa. Si la biblioteca compartida falta, obtendrá una salida similar a esta:

dyld: Library not loaded: mylib.dylib
  Referenced from: /path/to/myprogram
  Reason: image not found
Abort trap: 6

También puede ejecutar el siguiente comando:

objdump -r --dylibs-used /path/to/myprogram

En esencia, esto le dará el mismo resultado que el otool comando, que has mencionado en tu pregunta (hace muchos años, Apple reemplazó el antiguo conjunto de herramientas con un llvm basada en uno, así que otool en recientes versiones de macOS acaba de llamar objdump). El programa de las listas de las bibliotecas compartidas que el programa espera - a continuación, puede comprobar manualmente si usted realmente tiene esos archivos. I. e. hay un archivo en esa ruta con ese nombre, es legible por el usuario y contiene una válida biblioteca dinámica.

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