dyld: Biblioteca não carregada … Motivo: Imagem não carregada

Ao tentar executar um executável que já fui enviado no Mac OS X, recebo o seguinte erro

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

Eu instalei as bibliotecas de reforço e elas estão localizadas em /opt/local/lib . Eu acho que o problema tem algo a ver com o executável olhando apenas no diretório em que está, quando eu colo o ‘libboost_atomic.dylib’ lá, ele não se importa mais com isso. Infelizmente, então, ele reclama que não consegue encontrar a próxima biblioteca de reforço.

Existe uma maneira fácil de corrigir isso?

Encontre todas as bibliotecas do boost:

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

e para cada libboost_xxx.dylib , faça:

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

e finalmente verificar usando otool novamente:

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

Manipáginas: otool install_name_tool

EDIT Embora isso não esteja necessariamente relacionado a bibliotecas de terceiros (como boost ou Qt), se você estiver gerando o aplicativo e .dylib do mesmo projeto Xcode, você pode fazer isso sem usar install_name_tool configurando o Dynamic Library Install Name dentro das configurações de compilation. Aqui está um exemplo que permite ao executável do aplicativo carregar o .dylib partir de ../Frameworks/ :

insira a descrição da imagem aqui

Na General tab do destino, há um Embedded Binaries field .

adicione o framework necessário e o crash será resolvido.

insira a descrição da imagem aqui

clique no sinal + e adicione framework

Para alguns, isso pode ser tão fácil quanto definir o caminho do sistema para bibliotecas dinâmicas. No OS X, isso é tão simples quanto configurar a variável de ambiente DYLD_LIBRARY_PATH . Vejo:

Não há problema em usar o DYLD_LIBRARY_PATH no Mac OS X? E qual é o algoritmo de busca da biblioteca dinâmica?

Eu recebi este erro quando tentei instalar o ruby ​​2.3.1 usando rvm. Primeiro me disse para executar brew update , o que eu fiz, e então quando eu tentei rodar o rvm install ruby-2.3.1 , recebi o erro nesta pergunta SO.

A correção foi para primeiro executar brew upgrade , aparentemente, de acordo com esta pergunta superuser.com você precisa fazer tanto brew update && brew upgrade . Uma vez feito isso, eu poderia finalmente instalar o ruby ​​2.3.1.

Você pode usar o comando otool com a opção -L para o executável, que exibirá onde o executável está esperando essas bibliotecas.

Se o caminho para esses precisar mudar, use o comando install_name_tool , que permite que você defina o caminho para as bibliotecas.

Eu cheguei aqui tentando executar um programa que acabei de compilar usando o CMake. Quando tento executá-lo, reclama dizendo:

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

Eu contornei o problema dizendo ao CMake para usar a versão estática do Boost, em vez de deixá-lo usar o dynamic:

 set(Boost_USE_STATIC_LIBS ON) 

Isso funcionou para mim:

 brew upgrade node 

Você pode usar o sudo install_name_tool -change -change change caminho dylib E sudo install_name_tool -id -id change dylib name

Eu corrigi-lo por brew install libpng

Para qualquer um que tenha chegado a esta página porque recebeu este erro ao tentar vincular uma estrutura de terceiros ao seu projeto usando o Xcode 6.3.1, o problema que encontrei foi porque a biblioteca estava sendo criada com uma versão mais antiga do compilador usando uma versão diferente de rápido. A única maneira de corrigir isso para mim foi reconstruir o framework.

Outra razão que você pode obter isso é indicado em um documento técnico da Apple.

Se você está criando um aplicativo que não usa o Swift, mas incorpora conteúdo, como um framework, o Xcode não inclui essas bibliotecas no seu aplicativo. Como resultado, seu aplicativo travará ao ser iniciado com uma mensagem de erro com a seguinte aparência:

definir a configuração de compilation do conteúdo incorporado contém código Swift (EMBEDDED_CONTENT_CONTAINS_SWIFT) como SIM em seu aplicativo

Aqui está o link para o documento completo da Apple que explica aqui

Eu enfrentei o problema de travamento do aplicativo citando o erro SIGABRT no thread.Overview do acidente é dyld biblioteca não carregada e imagem não encontrou algo parecido.

Isso foi visto na versão xcode 9.3. A razão pela qual eu descobri foi que o xcode não está pegando bibliotecas dinamicamente, então eu tive que fazer isso manualmente, o que resolveu meu problema de travamento.

Siga os passos abaixo: Passo 1: Vá para Build Phases Passo 2: Clique no botão ‘+’ no topo e selecione “New Copy File Phase” Passo 3: Selecione Destination as Frameworks e clique no botão ‘+’ abaixo para adicionar arquivos . Etapa 4: selecione Adicionar outro abaixo, clique em CMD + SHIFT + G e cole o caminho abaixo, /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos

Agora você poderá ver alguns dylibs rápidos, selecione todas as bibliotecas rápidas com a extensão .dylib e clique em abrir.

Estes serão adicionados aos binários incorporados na guia geral do aplicativo.

Crie um novo grupo na pasta do projeto e adicione todas essas bibliotecas.

Agora execute seu aplicativo.

Codificação Feliz