web-dev-qa-db-ja.com

dyld:ライブラリがロードされていません...理由:画像が見つかりません

Mac OS Xで送られてきた実行ファイルを実行しようとすると、次のエラーが表示されます。

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

ブーストライブラリをインストールしました。それらは/opt/local/libにあります。この問題は、そこに 'libboost_atomic.dylib'を貼り付けたときのように、実行可能ファイルが存在するディレクトリ内のみを見ていることに関係していると思います。残念ながらそれはそれが次のブーストライブラリを見つけることができないと不平を言っています。

これを修正する簡単な方法はありますか?

181
rwolst

すべてのブーストライブラリを探します。

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

そしてlibboost_xxx.dylibごとに、

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

そして最後にもう一度otoolを使って検証します。

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

マンページ: otoolinstall_name_tool

EDITしばらく前に、私はアプリを構築するときにこれらすべてを自動的に解決するためにpythonスクリプト(copy_dylibs.py)を書きました。 /usr/localまたは/opt/localからすべてのライブラリをアプリバンドルにパッケージ化し、それらのライブラリへの参照を修正して@rpathを使用します。これは、Homebrewを使用してサードパーティのライブラリを簡単にインストールし、それらを同じように簡単にパッケージ化できることを意味します。

私は今このスクリプトを github で公開しました。

135
trojanfoe

ターゲットのGeneral tabにはEmbedded Binaries fieldがあります。

必要なframeworkを追加するとクラッシュは解決します。

enter image description here

+サインをクリックしてframeworkを追加してください

75
Himanshu padia

これは私のために働いた:

brew upgrade node
50
oshaiken

動的ライブラリのシステムパスを設定するのと同じくらい簡単なこともあります。 OS Xでは、これはDYLD_LIBRARY_PATH環境変数を設定するのと同じくらい簡単です。見る:

Mac OS XでDYLD_LIBRARY_PATHを使用しても大丈夫ですか?そして、それを使った動的ライブラリ検索アルゴリズムは何ですか?

28
markshiz

Rvmを使ってRuby 2.3.1をインストールしようとしたときにこのエラーが発生しました。最初にbrew updateを実行するように指示されましたが、rvm install Ruby-2.3.1を実行しようとすると、この[SO質問でエラーが発生しました。

この修正は最初にbrew upgradeを実行することでした。どうやらこの superuser.com の質問に従うと、brew updateと&brew upgradeの両方を実行する必要があります。それができたら、ついにRuby 2.3.1をインストールすることができました。

13
IonicBurger

Mac OSをMojaveにアップグレードした後。 yarnコマンドでnpmモジュールをインストールしようとしましたが、エラーが発生しました。

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

で修正されました:

brew update
brew upgrade
12

私はここでCMakeを使ってコンパイルしたばかりのプログラムを実行しようとしました。実行しようとすると、次のように文句を言われます。

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

私はCMakeがBoostの動的バージョンを使用するのではなく、静的バージョンを使用するように指示する問題を回避しました。

set(Boost_USE_STATIC_LIBS ON)
5
Lucio Paiva

実行可能ファイルに-Lオプションを付けて otool コマンドを使用すると、実行可能ファイルがそれらのライブラリを想定している場所を表示できます。

それらへのパスを変更する必要がある場合は、 install_name_tool コマンドを使用して、ライブラリへのパスを設定できるようにします。

5
TheDarkKnight

brew install libpngで直します

2
user3835452

あなたはSudo install_name_tool -change change dylib pathそしてSudo install_name_tool -id change dylib nameを使うことができます

1
hailuodev

Xcode 6.3.1を使用してサードパーティのフレームワークを自分のプロジェクトにリンクしようとしたときにこのエラーが発生したためにこのページにアクセスした場合、私が遭遇した問題スイフトこれを修正する唯一の方法は、フレームワークを再構築することでした。

あなたがこれを得るかもしれないもう一つの理由はアップルテクニカルドキュメントに述べられています..

Swiftを使用せず、使用するフレームワークなどのコンテンツを埋め込むアプリを作成している場合、Xcodeはこれらのライブラリをアプリに含めません。その結果、起動時に次のようなエラーメッセージが表示されてアプリがクラッシュします。

アプリの埋め込みコンテンツにスウィフトコードを含む(EMBEDDED_CONTENT_CONTAINS_Swift)ビルド設定をYESに設定します。

これはそれを説明する完全なAppleドキュメントへのリンクです ここ

1
bolnad

私はCommand + Shift + Kを押すだけでこの問題を修正しました。

0
Douglas Pfeifer

私はスレッドでSIGABRTエラーを引用してアプリのクラッシュの問題に直面しました。クラッシュの概要はdyldライブラリがロードされていないと画像がそのようなものを見つけられませんでした。

これはxcode 9.3 versionで見られました。xcodeがライブラリを動的にピックアップしていないことが原因で、クラッシュの問題を解決しました。

以下の手順に従います。ステップ1:ビルドフェーズに進みます。ステップ2:上部にある[+]ボタンをクリックして[新しいコピーファイルフェーズ]を選択します。ステップ3:フレームワークとしてコピー先を選択してファイルを追加します。ステップ4:下にあるAdd Otherを選択し、CMD + SHIFT + Gをクリックして、下のパス/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/Swift/iphoneosを貼り付けます

今、あなたはいくつかのSwift dylibを見ることができるでしょう、.dylib拡張子を持つすべてのSwiftライブラリーを選択して開くをクリックしてください。

これらはアプリの一般タブの埋め込みバイナリに追加されます。

プロジェクトフォルダに新しいグループを作成し、これらのライブラリをすべて追加します。

今すぐあなたのアプリを実行します。

ハッピーコーディング

0
Miya Mirza

Homebrewを再インストールすることでこれを修正しました

アンインストール

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

インストール

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

0
sidonaldson

多分誰かがこれを必要とします:

cmakeを使用している場合は、ターゲットプロパティにDYLIB_INSTALL_NAME_BASE "@rpath"を追加します。

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}"
    )

またはxcode動的ライブラリプロジェクトTarget - > Build Settingset動的ライブラリインストール名前ベースから@ rpath

0
cn00

別のライブラリやパッケージで同じことを経験している人のために、@ user3835452は正しい方向に向かっています。 composerを実行しようとしているときに、このメッセージが見つかりました。

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

さまざまな方法を試した後、私はbrew install openldapを実行し、それを修正しました。私は既にbrew updatebrew upgradeを実行していましたが、手動でopenldapをインストールした後に初めて実際に動作しました。

0
brunouno