Lorsque j'essaie d'exécuter un exécutable que j'ai reçu sous Mac OS X, j'obtiens l'erreur suivante
dyld: Library not loaded: libboost_atomic.dylib
Referenced from: /Users/"Directory my executable is in"
Reason: image not found
Trace/BPT trap:5
J'ai installé les bibliothèques boost et elles se trouvent dans /opt/local/lib
. Je pense que le problème a quelque chose à voir avec l'exécutable qui ne regarde que dans le répertoire où il se trouve, car lorsque je colle le 'libboost_atomic.dylib' dedans, cela ne le dérange plus. Malheureusement, il se plaint de ne pas trouver la prochaine bibliothèque de boost.
Existe-t-il un moyen simple de résoudre ce problème?
Réponses:
Retrouvez toutes les librairies boost:
et pour chacun
libboost_xxx.dylib
, faites:et enfin vérifier à
otool
nouveau en utilisant :Pages de manuel:
otool
install_name_tool
EDIT Il y a quelque temps, j'ai écrit un script python (
copy_dylibs.py
) pour résoudre tout cela automatiquement lors de la construction d'une application. Il regroupera toutes les bibliothèques à partir de/usr/local
ou/opt/local
dans le bundle d'application et corrigera les références à ces bibliothèques à utiliser@rpath
. Cela signifie que vous pouvez facilement installer une bibliothèque tierce en utilisant Homebrew et les empaqueter tout aussi facilement.J'ai maintenant rendu ce script public sur github .
la source
DYLD_LIBRARY_PATH
de modifier le chemin de recherche. L'autre réponse a ceci.exefile
représente le fichier exécutable que vous essayez d'exécuter. Dans mon cas, aotool -L /usr/local/bin/php
fait l'affaire.Dans l'
General
onglet de la cible , il y a une section appeléeFrameworks, Libraries, and Embedded Content
Cliquez sur le
+
signe, ajoutez requisframework
et le crash est résolu.la source
LC_ID_DYLIB
je ne peux donc pas avoir besoin de faire un lien symbolique dans usr / loca / opt! existe-t-il un moyen de comprendre? : | C'est douloureux :(Cela a fonctionné pour moi:
la source
node
utilisant homebrew. Une autre installation a probablement rompu le chemin du nœud. A également fonctionné pour moi.Après la mise à niveau de Mac OS vers Mojave. J'ai essayé d'installer des modules npm via la
yarn
commande, j'ai eu une erreur:A été corrigé avec:
la source
node --version
sur mon système a entraîné la même erreur. L'exécution des deux commandes ci-dessus a résolu mon problème.brew cleanup
commande, ce qui est parfois utile si vous souhaitez vous débarrasser des anciennes versions.brew cleanup
puis il corrige.Pour certains, cela pourrait être aussi simple que de définir le chemin d'accès système pour les bibliothèques dynamiques. Sous OS X, cela revient à définir la
DYLD_LIBRARY_PATH
variable d'environnement. Voir:Est-il correct d'utiliser DYLD_LIBRARY_PATH sur Mac OS X? Et, quel est l'algorithme de recherche de bibliothèque dynamique avec lui?
la source
DYLD_LIBRARY_PATH
?DYLD_LIBRARY_PATH
. La bonne solution consiste à inclure des bibliothèques non standard avec le.app
et l'utilisateur n'aura rien à faire. Le développeur, cependant, peut encore avoir à pirater le chemin du chargeur selon ma réponse.J'ai eu cette erreur lorsque j'ai essayé d'installer ruby 2.3.1 à l'aide de rvm. Il m'a d'abord dit de courir
brew update
, ce que j'ai fait, puis quand j'ai essayé de courirrvm install ruby-2.3.1
, j'ai reçu l'erreur dans cette question SO.Le correctif devait d'abord être exécuté
brew upgrade
, apparemment selon cette question de superuser.com, vous devez faire les deuxbrew update
&&brew upgrade
. Une fois cela fait, j'ai enfin pu installer ruby 2.3.1.la source
brew upgrade
comme ça. Cela peut être un perturbateur majeur pour l'ensemble de votre système. Au lieu de cela, isolez ce qui doit être mis à niveau et mettez-le à niveau uniquement.Vous pouvez utiliser la commande otool avec l'option -L pour l'exécutable, qui affichera où l'exécutable attend ces bibliothèques.
Si le chemin d'accès à ceux-ci doit être modifié, utilisez la commande install_name_tool , qui vous permet de définir le chemin d'accès aux bibliothèques.
la source
Maintenant que Xcode a mis à jour leur IDE, ils ont un peu changé la façon dont cela fonctionne.
Auparavant, il était divisé en sections distinctes, comme illustré ci-dessus, avec des fichiers binaires intégrés et des cadres et bibliothèques liés en tant que sections distinctes.
Maintenant, il s'agit d'une section combinée avec des listes déroulantes à droite sur ce qui doit être intégré.
Cela m'a dérouté au début, mais c'est parfaitement logique maintenant.
la source
Je suis arrivé ici en essayant d'exécuter un programme que je viens de compiler en utilisant CMake. Lorsque j'essaye de l'exécuter, il se plaint de dire:
J'ai contourné le problème en disant à CMake d'utiliser la version statique de Boost, au lieu de le laisser utiliser la version dynamique:
la source
Si vous utilisez Xcode 11 et versions ultérieures:
Allez dans l'
General
onglet et ajoutez le cadre dans laFrameworks, Libraries, and Embedded Content
section.Important: Par défaut, il peut être marqué comme
Do Not Embed
, changez-leEmbed Without Signing
comme indiqué sur l'image et vous êtes prêt à partir.Pour les versions Xcode inférieures à 11:
Ajoutez simplement le cadre dans
Embedded Binaries
section et vous avez terminé.À votre santé!
la source
Pour résoudre l'erreur ci-dessous sur mon Macbook Catalina 10.15.4:
J'ai exécuté la commande ci-dessous et contourné le problème ci-dessus:
la source
J'ai résolu ce problème en utilisant
Product > Clean Build Folder
( CommandShiftK), ce qui rend une nouvelle construction propre, vraiment étrange.la source
Vous pouvez utiliser
sudo install_name_tool -change
changer le chemin de dylib etsudo install_name_tool -id
changer le nom de dylibla source
Je le répare par
brew install libpng
la source
Si vous utilisez cmake, ajoutez
DYLIB_INSTALL_NAME_BASE "@rpath"
aux propriétés cibles:ou dans le projet de bibliothèque dynamique Xcode Target -> Build Setting set Dynamic Library Install Name Base to @rpath
la source
si vous utilisez virtualenv, supprimez simplement le dossier de votre environnement et recréez-le avec cette commande
virtualenv --python=/usr/local/bin/python3 the_name_of_my_env
la source
Pour tous ceux qui viennent sur cette page parce qu'ils ont eu cette erreur en essayant de lier un framework tiers à leur projet en utilisant Xcode 6.3.1, le problème que j'ai rencontré était parce que la bibliothèque était créée avec une ancienne version du compilateur utilisant une version différente de rapide. La seule façon de résoudre ce problème pour moi était de reconstruire le cadre.
Une autre raison pour laquelle vous pourriez obtenir cela est indiquée dans un document technique Apple.
définissez le paramètre de génération Embedded Content Contains Swift Code (EMBEDDED_CONTENT_CONTAINS_SWIFT) sur YES dans votre application
Voici le lien vers le document Apple complet qui l'explique ici
la source
Pour mon framework, j'utilisais un sous-projet Xcode ajouté comme sous-module git.
Je crois que j'obtenais cette erreur parce que je signais le cadre avec une équipe de signature différente de mon application principale. (changé d'équipe pour l'application; oublié de changer de cadre)
La solution est de ne pas signer dans le cadre du projet. Au lieu de cela, dans la
Target > General > Frameworks, Libraries, and Embedded Content
section de l'application principale , signez le cadre viaEmbed & Sign
.Si je sélectionne
Do not Embed
ouEmbed Without Signing
j'obtiens plutôt l'erreur:la source
Xcode 11.1 et Swift 5.1
Solution rapide
Assurez-vous d'abord que la bibliothèque externe ajoutée a l'option d'intégration est sélectionnée dans l'onglet Général, Binaires intégrés.
Si cela ne fonctionne toujours pas ..
Cela se produit car vous disposez de versions différentes et inégalées des bibliothèques.
Mettre à jour les pods
Important: vérifiez que toutes les bibliothèques sont incluses dans la liste des paramètres de construction -> bibliothèques et frameworks et que vous avez donné la possibilité de les intégrer dans la construction
Je travaille juste génial
la source
Pour tous ceux qui vivent la même chose avec une bibliothèque ou un package différent, @ user3835452 est sur la bonne voie. J'ai trouvé ce message en essayant d'exécuter
composer
:Après avoir essayé beaucoup de façons différentes, je viens de courir
brew install openldap
et ça a corrigé. Notez que j'avais déjà courubrew update
etbrew upgrade
mais seulement après avoir installé manuellementopenldap
cela a fonctionné.la source
J'ai résolu ce problème en réinstallant Homebrew
Désinstaller
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
Installer
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
la source
Je viens de l'utiliser
brew upgrade <the tool>
. Dans mon cas,brew upgrade tmux
.la source
J'ai rencontré le problème de plantage de l'application en citant une erreur SIGABRT dans le thread.
Cela a été vu dans Xcode 9.3. La raison pour laquelle j'ai découvert que Xcode ne récupérait pas les bibliothèques de manière dynamique, j'ai donc dû le faire manuellement, ce qui a résolu mon problème de plantage.
Suivez les étapes ci-dessous:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos
Maintenant, vous pourrez voir des dylibs rapides, sélectionnez toutes les bibliothèques swift avec l'extension .dylib et cliquez sur ouvrir.
Ceux-ci seront ajoutés aux fichiers binaires intégrés dans l'onglet général de l'application.
Créez un nouveau groupe dans le dossier du projet et ajoutez toutes ces bibliothèques.
Exécutez maintenant votre application.
la source
Si vous utilisez l'environnement Conda dans le terminal, mettez à jour les samtools pour le résoudre.
la source
La meilleure réponse est ci-dessus, vérifiez d'abord quelle est la sortie de
otool -L
Et puis procédez comme suit si incorrect
Et
la source
cela devrait résoudre le problème
la source
Rien de ce qui précède n'a fonctionné pour moi, mais l'a
brew reinstall icu4c
fait.la source
Pour tous ceux qui pourraient encore avoir ce problème:
C'est un problème permanent du côté d'Apple, et ce qui a fonctionné pour moi, c'est la mise à niveau vers iOS 13.4 (bêta). Installé cela et travaillé comme un charme.
la source