macos dylib otool install-name-tool

macos - dyld: Biblioteca no cargada... Motivo: Imagen no cargada



dylib otool (11)

Cuando intento ejecutar un ejecutable que me han enviado en Mac OS X, aparece el siguiente error

dyld: Library not loaded: libboost_atomic.dylib Referenced from: /Users/"Directory my executable is in" Reason: image not found Trace/BPT trap:5

He instalado las bibliotecas de impulso y están ubicadas en /opt/local/lib . Creo que el problema tiene que ver con que el ejecutable solo mire en el directorio en el que está, ya que cuando pego el ''libboost_atomic.dylib'' allí, ya no le importa. Desafortunadamente, luego se queja de que no puede encontrar la próxima biblioteca de impulso.

¿Hay alguna manera fácil de arreglar esto?


En la General tab del objetivo, hay un Embedded Binaries field .

agregue el framework requerido y se resuelve el bloqueo.

haga clic en el signo + y agregue framework


Encuentra todas las bibliotecas de impulso:

$ otool -L exefile exefile: @executable_path/libboost_something.dylib (compatibility version 0.7.0, current version 0.7.0) /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 65.1.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)

y para cada libboost_xxx.dylib , hacer:

$ install_name_tool -change @executable_path/libboost_something.dylib /opt/local/lib/libboost_something.dylib exefile

y finalmente verifique el uso de otool nuevamente:

$ otool -L exefile exefile: /opt/local/lib/libboost_something.dylib (compatibility version 0.7.0, current version 0.7.0) /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 65.1.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)

Manpages: otool install_name_tool

EDITAR Aunque esto no necesariamente se relaciona con bibliotecas de terceros (como boost o Qt), si está generando la aplicación y .dylib desde el mismo proyecto de Xcode, puede hacerlo sin usar install_name_tool configurando el nombre de instalación de Dynamic Library. dentro de la configuración de compilación. Aquí hay un ejemplo que permite que el ejecutable de la aplicación cargue el .dylib desde ../Frameworks/ :


Esto funcionó para mí:

brew upgrade node


Llegué aquí tratando de ejecutar un programa que acabo de compilar usando CMake. Cuando intento ejecutarlo, se queja diciendo:

dyld: Library not loaded: libboost_system.dylib Referenced from: /Users/path/to/my/executable Reason: image not found

Evité el problema de decirle a CMake que use la versión estática de Boost, en lugar de dejar que use la dinámica:

set(Boost_USE_STATIC_LIBS ON)


Lo arreglo por brew install libpng


Me enfrenté al problema de bloqueo de aplicaciones citando el error SIGABRT en el hilo. La vista general del bloqueo es una biblioteca dyld no cargada y la imagen no encontró algo así.

Esto se vio en la versión de xcode 9.3. La razón por la que me enteré fue que xcode no está recogiendo bibliotecas dinámicamente, así que tuve que hacerlo manualmente, lo que resolvió mi problema de bloqueo.

Siga los pasos a continuación: Paso 1: vaya a Fases de compilación Paso 2: presione el botón ''+'' en la parte superior y seleccione "Nueva fase de archivo de copia" Paso 3: Seleccione destino como marcos y presione el botón ''+'' a continuación para agregar archivos . Paso 4: Seleccione Agregar otro a continuación, haga clic en CMD + MAYÚS + G y pegue la siguiente ruta, /Aplicaciones/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos

Ahora podrá ver algunos dylibs rápidos, seleccionar todas las bibliotecas rápidas con la extensión .dylib y hacer clic en abrir.

Estos se agregarán a los binarios incrustados en la pestaña general de la aplicación.

Cree un nuevo grupo en la carpeta del proyecto y agregue todas estas bibliotecas.

Ahora ejecuta tu aplicación.

Happy Coding


Obtuve este error cuando intenté instalar Ruby 2.3.1 usando rvm. Primero me dijo que ejecutara la brew update , lo cual hice, y luego, cuando intenté ejecutar rvm install ruby-2.3.1 , recibí el error en esta pregunta de SO.

La solución fue ejecutar primero la brew upgrade , aparentemente de acuerdo con esta pregunta de superuser.com que necesita para hacer tanto la brew update brew upgrade . Una vez hecho esto, finalmente pude instalar Ruby 2.3.1.



Para cualquiera que venga a esta página porque obtuvo este error al intentar vincular un marco de terceros a su proyecto utilizando Xcode 6.3.1, el problema que encontré fue porque la biblioteca se estaba creando con una versión anterior del compilador usando una versión diferente de rápido. La única forma de arreglar esto para mí era volver a construir el marco.

Otra razón por la que puede obtener esto se indica en un documento técnico de Apple.

Si está creando una aplicación que no usa Swift pero incorpora contenido como un marco que sí lo hace, Xcode no incluirá estas bibliotecas en su aplicación. Como resultado, su aplicación se bloqueará al iniciarse con un mensaje de error con el siguiente aspecto:

establecer la configuración de compilación Contenido incrustado contiene código Swift (EMBEDDED_CONTENT_CONTAINS_SWIFT) a SÍ en su aplicación

Aquí está el enlace al documento completo de Apple que lo explica here


Puede usar sudo install_name_tool -change change dylib path And sudo install_name_tool -id change dylib name


Puede usar el comando otool con la opción -L para el ejecutable, que se mostrará donde el ejecutable espera que estén esas bibliotecas.

Si la ruta de acceso necesita cambiar, use el comando install_name_tool , que le permite establecer la ruta a las bibliotecas.