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 algo que ver con que el ejecutable solo busque en el directorio en el que se encuentra, ya que cuando pego el 'libboost_atomic.dylib' allí, ya no le importa. Desafortunadamente, se queja de que no puede encontrar la próxima biblioteca de impulso.
¿Hay una manera fácil de arreglar esto?
Respuestas:
Encuentra todas las bibliotecas de impulso:
y para cada uno
libboost_xxx.dylib
, hacer:y finalmente verifique usando
otool
nuevamente:Páginas de manual:
otool
install_name_tool
EDITAR Hace un tiempo escribí un script de python (
copy_dylibs.py
) para resolver todo esto automáticamente al crear una aplicación. Empaquetará todas las bibliotecas desde/usr/local
o/opt/local
dentro del paquete de aplicaciones y corregirá las referencias a esas bibliotecas para usar@rpath
. Esto significa que puede instalar fácilmente una biblioteca de terceros utilizando Homebrew y empaquetarlas con la misma facilidad.Ahora he hecho público este script en github .
fuente
DYLD_LIBRARY_PATH
para modificar la ruta de búsqueda. La otra respuesta tiene esto.exefile
representa el archivo ejecutable que está intentando ejecutar. En mi caso,otool -L /usr/local/bin/php
hizo el truco.En la
General
pestaña del objetivo , hay una sección llamadaFrameworks, Libraries, and Embedded Content
Haga clic en el
+
signo, agregue requeridoframework
y se resuelve el bloqueo.fuente
LC_ID_DYLIB
no puedo hacer un enlace simbólico en usr / loca / opt. ¿Hay alguna forma de averiguarlo? : | Es doloroso :(Esto funcionó para mí:
fuente
node
usando homebrew. Probablemente otra instalación rompió la ruta del nodo. También funcionó para mí.Después de actualizar Mac OS a Mojave. Traté de instalar módulos npm a través del
yarn
comando Recibí un error:Fue arreglado con:
fuente
node --version
en mi sistema resultó en el mismo error. Ejecutar los dos comandos anteriores resolvió mi problema.brew cleanup
comando, que es bueno hacer a veces si quieres deshacerte de las versiones antiguas.brew cleanup
luego se solucionó.Para algunos, esto podría ser tan fácil como configurar la ruta del sistema para bibliotecas dinámicas. En OS X, esto es tan simple como configurar la
DYLD_LIBRARY_PATH
variable de entorno. Ver:¿Está bien usar DYLD_LIBRARY_PATH en Mac OS X? Y, ¿cuál es el algoritmo de búsqueda dinámica de la biblioteca con él?
fuente
DYLD_LIBRARY_PATH
.DYLD_LIBRARY_PATH
. La solución correcta es incluir bibliotecas no estándar con.app
y el usuario no tendrá que hacer nada. Sin embargo, el desarrollador aún puede tener que hackear la ruta del cargador según mi respuesta.Recibí este error cuando intenté instalar ruby 2.3.1 usando rvm. Primero me dijo que corriera
brew update
, lo cual hice, y luego, cuando intenté correrrvm install ruby-2.3.1
, recibí el error en esta pregunta SO.La solución fue ejecutar primero
brew upgrade
, aparentemente de acuerdo con esta pregunta de superuser.com , debe hacer ambasbrew update
&&brew upgrade
. Una vez hecho esto, finalmente podría instalar ruby 2.3.1.fuente
brew upgrade
así. Esto puede ser un disruptor masivo para todo el sistema. En cambio, aísle lo que necesita actualizarse y actualícelo solo.Puede usar el comando otool con la opción -L para el archivo ejecutable, que mostrará dónde espera el archivo ejecutable esas bibliotecas.
Si es necesario cambiar la ruta a esas, use el comando install_name_tool , que le permite establecer la ruta a las bibliotecas.
fuente
Ahora que Xcode ha actualizado su IDE, han cambiado un poco su funcionamiento.
Solía dividirse en una sección separada como se demostró anteriormente con 'Binarios incrustados' y 'Marcos y bibliotecas vinculadas' como secciones separadas.
Ahora, es una sección combinada con menús desplegables a la derecha sobre lo que debe integrarse.
Esto fue confuso para mí al principio, pero ahora tiene mucho sentido.
fuente
Llegué tratando de ejecutar un programa que acabo de compilar usando CMake. Cuando trato de ejecutarlo, se queja diciendo:
Eludí el problema diciéndole a CMake que usara la versión estática de Boost, en lugar de dejar que usara la dinámica:
fuente
Si está utilizando Xcode 11 en adelante:
Vaya a la
General
pestaña y agregue el marco en laFrameworks, Libraries, and Embedded Content
sección.Importante: De manera predeterminada, puede estar marcado como
Do Not Embed
, cámbielo aEmbed Without Signing
como se muestra en la imagen y listo.Para las versiones de Xcode inferiores a 11:
Simplemente agregue el marco en la
Embedded Binaries
sección y ya está.¡Salud!
fuente
Para resolver el siguiente error en mi Macbook Catalina 10.15.4:
Ejecuté el comando a continuación y solucioné el problema anterior:
fuente
Solucioné este problema usando
Product > Clean Build Folder
( CommandShiftK), lo que hace que una nueva construcción limpia sea realmente extraña.fuente
Puede usar
sudo install_name_tool -change
cambiar la ruta dylib ysudo install_name_tool -id
cambiar el nombre dylibfuente
Lo arreglo por
brew install libpng
fuente
Si usa cmake, agregue
DYLIB_INSTALL_NAME_BASE "@rpath"
a las propiedades de destino:o en el proyecto de biblioteca dinámica Xcode Destino -> Configuración de compilación establece la base de nombre de instalación de biblioteca dinámica en @rpath
fuente
si usa virtualenv simplemente elimine la carpeta de su entorno y vuelva a crearla con este comando
virtualenv --python=/usr/local/bin/python3 the_name_of_my_env
fuente
Para cualquiera que haya venido a esta página porque recibió este error al intentar vincular un marco de terceros a su proyecto usando 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 veloz. La única forma de solucionar esto fue reconstruir el marco.
Otra razón por la que podría obtener esto se indica en un documento técnico de Apple.
establezca la configuración de compilación Contenido incrustado contiene código rápido (EMBEDDED_CONTENT_CONTAINS_SWIFT) en SÍ en su aplicación
Aquí está el enlace al documento completo de Apple que lo explica aquí.
fuente
Para mi marco, estaba usando un subproyecto Xcode agregado como un submódulo git.
Creo que recibí este error porque estaba firmando el marco con un equipo de firma diferente a mi aplicación principal. (equipos cambiados por aplicación; olvidé cambiar por marco)
La solución es no firmar dentro del proyecto marco. En cambio, en la
Target > General > Frameworks, Libraries, and Embedded Content
sección de la aplicación principal , firme el marco a través deEmbed & Sign
.Si selecciono
Do not Embed
o en suEmbed Without Signing
lugar obtengo el error:fuente
Xcode 11.1 y Swift 5.1
Arreglo rapido
Primero asegúrese de que la biblioteca externa agregada tenga la opción de incrustar seleccionada en la pestaña General, Binarios incrustados.
Si aún no funciona ..
Esto sucede porque tiene versiones diferentes e inigualables de bibliotecas presentes.
Actualiza las vainas
Importante: Verifique que todas las bibliotecas estén incluidas en la Configuración de compilación -> lista de bibliotecas y marcos y que haya dado la opción de incrustar en la compilación
Simplemente trabajando genial
fuente
Para cualquiera que experimente lo mismo con una biblioteca o paquete diferente, @ user3835452 está en el camino correcto. Encontré este mensaje al intentar ejecutar
composer
:Después de probar muchas formas diferentes, simplemente corrí
brew install openldap
y lo arreglé. Tenga en cuenta que ya había corrióbrew update
ybrew upgrade
pero sólo después de haber instalado manualmenteopenldap
lo hizo realidad el trabajo.fuente
Lo arreglé reinstalando Homebrew
Desinstalar
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
Instalar en pc
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
fuente
Acabo de usar
brew upgrade <the tool>
. En mi casobrew upgrade tmux
,.fuente
Me enfrenté al problema de bloqueo de la aplicación citando el error SIGABRT en el hilo.
Esto se vio en Xcode 9.3. La razón por la que descubrí 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:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos
Ahora podrá ver algunos dylibs rápidos, seleccione todas las bibliotecas rápidas con la extensión .dylib y haga 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.
fuente
Si está utilizando el entorno Conda en la terminal, actualice las samtools para resolverlo.
fuente
El mejor se responde arriba, primero verifique cuál es el resultado
otool -L
Y luego haga lo siguiente si es incorrecto
Y
fuente
esto debería solucionar el problema
fuente
Nada de lo anterior funcionó para mí, pero lo
brew reinstall icu4c
hizo.fuente
Para cualquiera que todavía pueda tener este problema:
Este es un problema continuo por parte de Apple, y lo que funcionó para mí es actualizar a iOS 13.4 (beta). Instalé eso y funcionó como un encanto.
fuente