407 votes

Dyld: Bibliothèque non chargée ... Raison : Image non trouvée

Lorsque j'essaie d'exécuter un exécutable que j'ai reçu sur Mac OS X, j'obtiens l'erreur suivante

dyld: Library not loaded: libboost_atomic.dylib
  Referenced from: /Users/"Répertoire dans lequel se trouve mon exécutable"
  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 ne regardant que dans le répertoire dans lequel il se trouve, car quand je colle 'libboost_atomic.dylib' là-bas, il ne le remarque plus. Malheureusement, il se plaint alors de ne pas trouver la prochaine bibliothèque boost.

Y a-t-il un moyen facile de corriger cela?

0 votes

Si vous avez encore des problèmes, utilisez la méthode de ce sujet

0 votes

Essayez de désinstaller python3.7.3 en utilisant ceci : huybien.com/how-to-completely-uninstall-python-on-macos

221voto

trojanfoe Points 61927

Trouvez toutes les bibliothèques boost (où exefile est le nom de votre exécutable) :

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

et pour chaque libboost_xxx.dylib, faites :

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

et enfin vérifiez à nouveau en utilisant otool :

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

Manuels : otool install_name_tool

EDIT Il y a un certain temps j'ai écrit un script python (copy_dylibs.py) pour automatiser tout cela lors de la construction d'une application. Il va regrouper toutes les bibliothèques de /usr/local ou /opt/local dans le bundle de l'application et corriger les références à ces bibliothèques pour utiliser @rpath. Cela signifie que vous pouvez facilement installer des bibliothèques tierces en utilisant Homebrew et les regrouper tout aussi facilement.

J'ai maintenant rendu ce script public sur github.

5 votes

@trojanfoe, pouvez-vous expliquer ici ce qu'est le fichier exécutable ? Est-ce un chemin d'accès à un fichier exécutable ?

2 votes

Après avoir recompilé l'exécutable, je dois répéter ce processus - assez ennuyeux pendant le développement.

5 votes

En réalité, la meilleure façon est d'utiliser DYLD_LIBRARY_PATH pour modifier le chemin de recherche. L'autre réponse l'a mentionné.

170voto

Cela a fonctionné pour moi :

brew upgrade node

127voto

himanshu padia Points 1241

Dans l'onglet Général de la cible, il y a une section appelée Cadres, Bibliothèques et Contenu Intégré

Cliquez sur le signe +, ajoutez le cadre requis et le crash est résolu.

Capturer d'écran de la dernière mise à jour de Xcode

118voto

Après la mise à niveau de Mac OS vers Mojave. J'ai essayé d'installer des modules npm via la commande yarn et j'ai obtenu une erreur :

dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.60.dylib
  Referenced from: /usr/local/bin/node
  Reason: image not found
Abort trap: 6

A été corrigé avec :

brew update
brew upgrade

44voto

markshiz Points 1040

Pour certains, cela pourrait être aussi simple que de définir le chemin du système pour les bibliothèques dynamiques. Sur OS X, il suffit de définir la variable d'environnement DYLD_LIBRARY_PATH. Voir:

Est-il OK d'utiliser DYLD_LIBRARY_PATH sur Mac OS X? Et, quel est l'algorithme de recherche de bibliothèques dynamiques avec cela?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X