Ao tentar executar um executável, 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
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á, como quando colo o 'libboost_atomic.dylib' lá, ele não se importa mais com isso. Infelizmente, ele reclama que não conseguiu encontrar a próxima biblioteca de impulso.
Existe uma maneira fácil de corrigir isso?
Respostas:
Encontre todas as bibliotecas de reforço:
e para cada um
libboost_xxx.dylib
, faça:e finalmente verifique usando
otool
novamente:Manpages:
otool
install_name_tool
EDITAR Há um tempo atrás, escrevi um script python (
copy_dylibs.py
) para resolver todas essas coisas automaticamente ao criar um aplicativo. Ele empacotará todas as bibliotecas do/usr/local
ou/opt/local
no pacote de aplicativos e corrigirá as referências a essas bibliotecas a serem usadas@rpath
. Isso significa que você pode instalar facilmente uma biblioteca de terceiros usando o Homebrew e empacotá-las com a mesma facilidade.Agora tornei este script público no github .
fonte
DYLD_LIBRARY_PATH
para modificar o caminho da pesquisa. A outra resposta conseguiu isso.exefile
representa o arquivo executável que você está tentando executar. No meu caso,otool -L /usr/local/bin/php
fiz o truque.Na
General
guia do alvo , há uma seção chamadaFrameworks, Libraries, and Embedded Content
Clique no
+
sinal, adicione o necessárioframework
e a falha será resolvida.fonte
LC_ID_DYLIB
eu não preciso fazer um link simbólico em usr / loca / opt! existe alguma maneira de descobrir? : | É doloroso :(Isso funcionou para mim:
fonte
node
usando homebrew. Provavelmente outra instalação quebrou o caminho do nó. Também funcionou para mim.Após a atualização do Mac OS para o Mojave. Eu tentei instalar os módulos npm via
yarn
comando, obtive um erro:Foi corrigido com:
fonte
node --version
no meu sistema resultou no mesmo erro. A execução dos dois comandos acima resolveu meu problema.brew cleanup
comando, o que é bom de fazer às vezes, se você quiser se livrar das versões antigas.brew cleanup
então ele corrigiu.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 definir a
DYLD_LIBRARY_PATH
variável de ambiente. Vejo:Posso usar DYLD_LIBRARY_PATH no Mac OS X? E qual é o algoritmo de pesquisa dinâmica de bibliotecas?
fonte
DYLD_LIBRARY_PATH
?DYLD_LIBRARY_PATH
. A solução correta é incluir bibliotecas não padrão.app
e o usuário não precisará fazer nada. O desenvolvedor, no entanto, ainda pode ter que hackear o caminho do carregador conforme minha resposta.Eu recebi esse erro quando tentei instalar o ruby 2.3.1 usando o rvm. Primeiro ele me disse para executar
brew update
, o que eu fiz e, quando tenteirvm install ruby-2.3.1
, recebi o erro nesta pergunta SO.A correção foi executada primeiro
brew upgrade
, aparentemente de acordo com esta pergunta do superuser.com, você precisa fazer as duas coisasbrew update
&&brew upgrade
. Feito isso, finalmente pude instalar o ruby 2.3.1.fonte
brew upgrade
exatamente assim. Isso pode ser um grande transtorno para todo o sistema. Em vez disso, isole o que precisa ser atualizado e atualize somente isso.Você pode usar o comando otool com a opção -L para o executável, que exibirá onde o executável espera que essas bibliotecas estejam.
Se o caminho para esses precisar mudar, use o comando install_name_tool , que permite definir o caminho para as bibliotecas.
fonte
Agora que o Xcode atualizou seu IDE, eles mudaram um pouco como isso funciona.
Costumava ser dividido em seção separada, como demonstrado acima, com 'Binários incorporados' e 'Frameworks e bibliotecas vinculadas' como seções separadas.
Agora, é uma seção combinada com menus suspensos à direita sobre o que deve ser incorporado.
Isso foi confuso para mim no começo, mas agora faz todo o sentido.
fonte
Cheguei aqui tentando executar um programa que acabei de compilar usando o CMake. Quando tento executá-lo, ele reclama dizendo:
Eu contornei o problema dizendo ao CMake para usar a versão estática do Boost, em vez de deixá-lo usar a dinâmica:
fonte
Se você estiver usando o Xcode 11 em diante:
Vá para a
General
guia e adicione a estrutura naFrameworks, Libraries, and Embedded Content
seção.Importante: Por padrão, pode ser marcado como
Do Not Embed
, altere-o para oEmbed Without Signing
mostrado na imagem e você estará pronto.Para versões do Xcode abaixo de 11:
Basta adicionar a estrutura na
Embedded Binaries
seção e pronto.Felicidades!
fonte
Para resolver o erro abaixo no meu Macbook Catalina 10.15.4:
Executei o comando abaixo e contornei o problema acima:
fonte
Corrigi esse problema usando
Product > Clean Build Folder
( CommandShiftK), o que torna uma nova compilação limpa, realmente estranha.fonte
Você pode usar o
sudo install_name_tool -change
caminho desudo install_name_tool -id
alteração do dylib E alterar o nome do dylibfonte
Eu conserto
brew install libpng
fonte
Se você usar o cmake, adicione
DYLIB_INSTALL_NAME_BASE "@rpath"
às propriedades de destino:ou no projeto da biblioteca dinâmica do Xcode, Destino -> Configuração da Construção, defina a Base de Nomes de Instalação da Biblioteca Dinâmica como @rpath
fonte
se você usar o virtualenv, remova a pasta do seu ambiente e recrie-a com este comando
virtualenv --python=/usr/local/bin/python3 the_name_of_my_env
fonte
Para quem vem a esta página porque recebeu esse erro ao tentar vincular uma estrutura de terceiros ao seu projeto usando o Xcode 6.3.1, o problema foi o de que 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 era reconstruir a estrutura.
Outro motivo para você conseguir isso é declarado em um documento técnico da Apple.
defina a configuração de compilação Conteúdo incorporado contém código Swift (EMBEDDED_CONTENT_CONTAINS_SWIFT) como YES no seu aplicativo
Aqui está o link para o documento completo da Apple que explica aqui
fonte
Para o meu framework, eu estava usando um subprojeto Xcode adicionado como um submódulo git.
Acredito que estava recebendo esse erro porque estava assinando a estrutura com uma equipe de assinatura diferente do meu aplicativo principal. (equipes trocadas por aplicativo; esqueceram de alternar para estrutura)
A solução é não assinar dentro do projeto de estrutura. Em vez disso, na
Target > General > Frameworks, Libraries, and Embedded Content
seção do aplicativo principal , assine a estrutura viaEmbed & Sign
.Se eu selecionar
Do not Embed
ouEmbed Without Signing
, em vez disso, receber o erro:fonte
Xcode 11.1 e Swift 5.1
Conserto rápido
Primeiro, verifique se a biblioteca adicionada externa tem a opção incorporar está selecionada na guia Geral, Binários incorporados.
Se ainda não funcionar ..
Isso acontece porque você tem versões diferentes e inigualáveis de bibliotecas presentes.
Atualize os pods
Importante: Verifique se todas as bibliotecas estão incluídas na lista Configurações de Construção -> bibliotecas e estruturas e você deu a opção de incorporar na construção
Apenas trabalhando incrível
fonte
Para quem experimenta a mesma coisa com uma biblioteca ou pacote diferente, @ user3835452 está no caminho certo. Encontrei esta mensagem ao tentar executar
composer
:Depois de tentar várias maneiras diferentes, eu apenas corri
brew install openldap
e o consertei. Observe que eu já havia executadobrew update
e,brew upgrade
somente depois que instalei manualmenteopenldap
, funcionou.fonte
Corrigi isso reinstalando o Homebrew
Desinstalar
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
Instalar
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
fonte
Eu apenas usei
brew upgrade <the tool>
. No meu casobrew upgrade tmux
.fonte
Se a resposta ajudou de alguma forma, por favor, marque como resposta, caso a sua dúvida não tenha sido solucionada, por favor, poste novamente.
Isso foi visto no Xcode 9.3. A razão pela qual descobri que o Xcode não está pegando bibliotecas dinamicamente, então tive que fazer isso manualmente, o que resolveu meu problema de travamento.
Siga os passos 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.
Eles 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.
fonte
Se você estiver usando o ambiente Conda no terminal, atualize as samtools para resolvê-lo.
fonte
O melhor é respondido acima, primeiro verifique qual é a saída de
otool -L
E faça o seguinte, se incorreto
E
fonte
isso deve corrigir o problema
fonte
Nenhuma das opções acima funcionou para mim, mas
brew reinstall icu4c
funcionou.fonte
Para qualquer um que ainda esteja com esse problema:
Esse é um problema contínuo do lado da Apple, e o que funcionou para mim foi a atualização para o ios 13.4 (beta). Instalei isso e funcionou como um encanto.
fonte