it-swarm.com.de

dyld: Bibliothek nicht geladen ... Grund: Bild nicht geladen

Beim Versuch, eine ausführbare Datei auszuführen, die in Mac OS X gesendet wurde, wird die folgende Fehlermeldung angezeigt

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

Ich habe die Boost-Bibliotheken installiert und sie befinden sich in /opt/local/lib. Ich denke, das Problem hat etwas mit der ausführbaren Datei zu tun, die nur in dem Verzeichnis sucht, in dem es sich befindet, als wenn ich die 'libboost_atomic.dylib' dort einfügte. Leider beschwert sie sich dann, dass sie die nächste Boost-Bibliothek nicht finden kann.

Gibt es eine einfache Möglichkeit, dies zu beheben?

154
rwolst

Finden Sie alle Boost-Bibliotheken:

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

und für jeden libboost_xxx.dylib:

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

und vergewissern Sie sich erneut, dass Sie otool erneut verwenden:

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

Manpages: otoolinstall_name_tool

EDIT Vor einiger Zeit habe ich ein Python-Skript (copy_dylibs.py) geschrieben, um all diese Dinge automatisch zu erstellen, wenn eine App erstellt wird. Es packt alle Bibliotheken von /usr/local oder /opt/local in das App-Bundle und fixiert Verweise auf diese Bibliotheken, um @rpath zu verwenden. Dies bedeutet, dass Sie die Bibliothek von Drittanbietern problemlos mit Homebrew installieren und diese ebenso einfach verpacken können.

Ich habe dieses Skript jetzt auf github veröffentlicht.

128
trojanfoe

Im General tab des Ziels befindet sich ein Embedded Binaries field

fügen Sie die erforderliche Variable framework hinzu und der Absturz wurde behoben.

 enter image description here

klicken Sie auf das Zeichen + und fügen Sie framework hinzu.

64
Himanshu padia

Für einige kann dies so einfach sein wie das Festlegen des Systempfads für dynamische Bibliotheken. Unter OS X müssen Sie lediglich die Umgebungsvariable DYLD_LIBRARY_PATH einstellen. Sehen: 

Ist es in Ordnung, DYLD_LIBRARY_PATH unter Mac OS X zu verwenden? Und was ist der dynamische Suchalgorithmus für Bibliotheken?

28
markshiz

Das hat für mich funktioniert: 

brew upgrade node
27
oshaiken

Ich habe diese Fehlermeldung erhalten, als ich versuchte, Ruby 2.3.1 mit rvm zu installieren. Zuerst wurde mir gesagt, dass ich brew update ausführen soll, was ich auch tat, und als ich rvm install Ruby-2.3.1 ausgeführt habe, erhielt ich den Fehler in dieser SO - Frage.

Der Fix war, zuerst brew upgrade auszuführen, anscheinend entsprechend dieser superuser.com - Frage, die Sie sowohl für brew update als auch für brew upgrade ausführen müssen. Sobald dies erledigt war, konnte ich endlich Ruby 2.3.1 installieren. 

12
IonicBurger

Sie können den Befehl otool mit der Option -L für die ausführbare Datei verwenden. Daraufhin wird angezeigt, wo die ausführbare Datei diese Bibliotheken erwartet. 

Wenn der Pfad zu diesen geändert werden muss, verwenden Sie den Befehl install_name_tool , mit dem Sie den Pfad zu den Bibliotheken festlegen können.

5
TheDarkKnight

Ich habe hier versucht, ein Programm auszuführen, das ich gerade mit CMake kompiliert habe. Wenn ich versuche, es auszuführen, klagt es:

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

Ich habe das Problem umgangen, das CMake angewiesen hat, die statische Version von Boost zu verwenden, anstatt die dynamische Version verwenden zu lassen:

set(Boost_USE_STATIC_LIBS ON)
4
Lucio Paiva

Nach dem Upgrade von Mac OS auf Mojave. Ich habe versucht, npm-Module über den Befehl yarn zu installieren. Ich habe eine Fehlermeldung erhalten:

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

Wurde behoben mit:

brew update
brew upgrade
3

Ich fixiere es durch brew install libpng

2
user3835452

Sie können Sudo install_name_tool -change dylib-Pfad ändern Und Sudo install_name_tool -id den Namen von dylib ändern

1
hailuodev

Ich habe dieses Problem durch einfaches Drücken von Befehlstaste + Umschalttaste + K behoben, wodurch ein neuer, sauberer Build wirklich seltsam wird.

0
Douglas Pfeifer

Ich stand vor dem App-Absturzproblem, in dem der SIGABRT-Fehler in Thread zitiert wurde. Die Übersicht über den Absturz ist, dass die Dyld-Bibliothek nicht geladen wurde und ein Bild nicht gefunden wurde.

Dies war in der xcode 9.3-Version zu sehen. Der Grund, warum ich herausfand, war, dass xcode Bibliotheken nicht dynamisch aufnahm, also musste ich es manuell machen, was mein Absturzproblem löste.

Führen Sie die folgenden Schritte aus: Schritt 1: Gehen Sie zu Build-Phasen Schritt 2: Klicken Sie oben auf die Schaltfläche "+" und wählen Sie "Neue Kopierphase" Schritt 3: Wählen Sie Ziel als Frameworks und klicken Sie auf OK Klicken Sie auf die Schaltfläche "+", um Dateien hinzuzufügen. Schritt 4: Wählen Sie unter "Weitere hinzufügen" aus, klicken Sie auf CMD + UMSCHALT + G und fügen Sie den folgenden Pfad ein: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/Swift/iphoneos

Nun sehen Sie einige Swift-Dylibs. Wählen Sie alle Swift-Bibliotheken mit der Erweiterung .dylib aus und klicken Sie auf Öffnen.

Diese werden zu den eingebetteten Binärdateien in der allgemeinen Registerkarte der App hinzugefügt.

Erstellen Sie eine neue Gruppe im Projektordner und fügen Sie alle diese Bibliotheken hinzu.

Führen Sie jetzt Ihre App aus.

Glückliche Kodierung

0
Miya Mirza

Ich habe das behoben, indem ich Homebrew neu installiert habe

Deinstallieren

Ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

Installieren

/usr/bin/Ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

0
sidonaldson

Vielleicht braucht jemand das:

wenn Sie cmake verwenden, fügen Sie DYLIB_INSTALL_NAME_BASE "@rpath" zu den Zieleigenschaften hinzu:

set_target_properties(target_dyLib PROPERTIES
        # # for FRAMEWORK begin
        # FRAMEWORK TRUE
        # FRAMEWORK_VERSION C
        # MACOSX_FRAMEWORK_IDENTIFIER com.cmake.targetname
        # MACOSX_FRAMEWORK_INFO_PLIST ./Info.plist
        # PUBLIC_HEADER targetname.h
        # # for FRAMEWORK end
        IPHONEOS_DEPLOYMENT_TARGET "8.0"
        DYLIB_INSTALL_NAME_BASE "@rpath" # this is the key point
        XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer"
        DEVELOPMENT_TEAM "${DEVELOPMENT_TEAM}"
    )

oder in einem dynamischen xcode-Bibliotheksprojekt Ziel -> Erstellungseinstellung set Dynamic Library Install Name Base in @rpath

0
cn00

Für jeden, der dasselbe mit einer anderen Bibliothek oder einem anderen Paket hat, ist @ user3835452 auf dem richtigen Weg. Ich habe diese Nachricht beim Versuch gefunden, composer auszuführen:

dyld: Library not loaded: /usr/local/opt/openldap/lib/libldap-2.4.2.dylib
  Referenced from: /usr/local/opt/[email protected]/bin/php
  Reason: image not found
Abort trap: 6

Nachdem ich viele verschiedene Möglichkeiten ausprobiert hatte, lief ich einfach brew install openldap und es wurde behoben. Beachten Sie, dass ich brew update und brew upgrade bereits ausgeführt hatte, aber erst nachdem ich openldap manuell installiert hatte, funktionierte es tatsächlich.

0
brunouno

Für jeden, der zu dieser Seite kam, weil dieser Fehler beim Versuch, ein Drittanbieter-Framework mit Xcode 6.3.1 zu verknüpfen, auftauchte, bestand das Problem, das ich hatte, weil die Bibliothek mit einer älteren Version des Compilers erstellt wurde, die eine andere Version verwendete von Swift. Die einzige Möglichkeit, dies zu beheben, bestand darin, das Framework neu zu erstellen.

Ein weiterer Grund dafür könnte in einem technischen Dokument von Apple angegeben werden.

Wenn Sie eine App erstellen, die Swift nicht verwendet, aber Inhalte wie bspw. Ein Framework einbettet, werden diese Bibliotheken von Xcode nicht in Ihre App aufgenommen. Daher stürzt Ihre App beim Starten mit einer Fehlermeldung ab, die wie folgt aussieht:

setzen Sie die Build-Einstellung Embedded Content Contains Swift Code (EMBEDDED_CONTENT_CONTAINS_Swift) in Ihrer App auf YES

Hier ist der Link zum vollständigen Apple-Dokument, das es erklärt hier

0
bolnad