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'を貼り付けたときのように、実行可能ファイルが存在するディレクトリ内のみを見ていることに関係していると思います。残念ながらそれはそれが次のブーストライブラリを見つけることができないと不平を言っています。
これを修正する簡単な方法はありますか?
すべてのブーストライブラリを探します。
$ 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)
マンページ: otool
install_name_tool
EDITしばらく前に、私はアプリを構築するときにこれらすべてを自動的に解決するためにpythonスクリプト(copy_dylibs.py
)を書きました。 /usr/local
または/opt/local
からすべてのライブラリをアプリバンドルにパッケージ化し、それらのライブラリへの参照を修正して@rpath
を使用します。これは、Homebrewを使用してサードパーティのライブラリを簡単にインストールし、それらを同じように簡単にパッケージ化できることを意味します。
私は今このスクリプトを github で公開しました。
これは私のために働いた:
brew upgrade node
動的ライブラリのシステムパスを設定するのと同じくらい簡単なこともあります。 OS Xでは、これはDYLD_LIBRARY_PATH
環境変数を設定するのと同じくらい簡単です。見る:
Mac OS XでDYLD_LIBRARY_PATHを使用しても大丈夫ですか?そして、それを使った動的ライブラリ検索アルゴリズムは何ですか?
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をインストールすることができました。
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
私はここで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)
実行可能ファイルに-Lオプションを付けて otool コマンドを使用すると、実行可能ファイルがそれらのライブラリを想定している場所を表示できます。
それらへのパスを変更する必要がある場合は、 install_name_tool コマンドを使用して、ライブラリへのパスを設定できるようにします。
brew install libpng
で直します
あなたはSudo install_name_tool -change
change dylib pathそしてSudo install_name_tool -id
change dylib nameを使うことができます
Xcode 6.3.1を使用してサードパーティのフレームワークを自分のプロジェクトにリンクしようとしたときにこのエラーが発生したためにこのページにアクセスした場合、私が遭遇した問題スイフトこれを修正する唯一の方法は、フレームワークを再構築することでした。
あなたがこれを得るかもしれないもう一つの理由はアップルテクニカルドキュメントに述べられています..
Swiftを使用せず、使用するフレームワークなどのコンテンツを埋め込むアプリを作成している場合、Xcodeはこれらのライブラリをアプリに含めません。その結果、起動時に次のようなエラーメッセージが表示されてアプリがクラッシュします。
アプリの埋め込みコンテンツにスウィフトコードを含む(EMBEDDED_CONTENT_CONTAINS_Swift)ビルド設定をYESに設定します。
これはそれを説明する完全なAppleドキュメントへのリンクです ここ
私はCommand + Shift + Kを押すだけでこの問題を修正しました。
私はスレッドで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ライブラリーを選択して開くをクリックしてください。
これらはアプリの一般タブの埋め込みバイナリに追加されます。
プロジェクトフォルダに新しいグループを作成し、これらのライブラリをすべて追加します。
今すぐあなたのアプリを実行します。
ハッピーコーディング
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)"
多分誰かがこれを必要とします:
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
別のライブラリやパッケージで同じことを経験している人のために、@ 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 update
とbrew upgrade
を実行していましたが、手動でopenldap
をインストールした後に初めて実際に動作しました。