dyld: Library not loaded … Reason: Image not loade

2019-01-03 00:47发布

When trying to run an executable I've been sent in Mac OS X, I get the following error

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

I have installed the boost libraries and they are located in /opt/local/lib. I think the problem has something to do with the executable only looking in the directory it is in as when I paste the 'libboost_atomic.dylib' in there, it doesn't mind about it anymore. Unfortunately then it complains it can't find the next boost library.

Is there an easy way to fix this?

12条回答
Ridiculous、
2楼-- · 2019-01-03 01:16

I got this error when I tried to install ruby 2.3.1 using rvm. It first told me to run brew update, which I did, and then when I tried running rvm install ruby-2.3.1, I received the error in this SO question.

The fix was to first run brew upgrade, apparently according to this superuser.com question you need to do both brew update && brew upgrade. Once that was done, I could finally install ruby 2.3.1.

查看更多
相关推荐>>
3楼-- · 2019-01-03 01:17

You can use sudo install_name_tool -change change dylib path And sudo install_name_tool -id change dylib name

查看更多
狗以群分
4楼-- · 2019-01-03 01:19

You can use the otool command with the -L option for the executable, which will display where the executable is expecting those libraries to be.

If the path to those need changing, use the install_name_tool command, which allows you to set the path to the libraries.

查看更多
乱世女痞
5楼-- · 2019-01-03 01:19

I faced the app crash issue quoting SIGABRT error in thread.Overview of the crash is dyld library not loaded and image not found something like that.

This was seen in xcode 9.3 version.The reason i found out was xcode is not picking up libraries dynamically so i had to do it manually which solved my crash issue.

Follow the below steps: Step 1: Go to Build Phases Step 2: Hit the '+' button at the top and select "New Copy File Phase" Step 3 : Select Destination as Frameworks and Hit the '+' button below to add files. Step 4 : Select Add Other at below, click CMD+SHIFT+G and paste the below path, /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos

Now you will be able to see some swift dylibs, Select all the swift libraries with .dylib extension and click on open.

These will get added to the embedded binaries in the general tab of app.

Create a new group in project folder and add all these libraries.

Now run your app.

Happy Coding

查看更多
时光不老,我们不散
6楼-- · 2019-01-03 01:22

Find all the boost libraries:

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

and for each libboost_xxx.dylib, do:

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

and finally verify using otool again:

$ 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: otool install_name_tool

EDIT While this doesn't necessarily relate to third-party libraries (like boost or Qt), if you are generating the app and .dylib from the same Xcode project then you can actually do this without using install_name_tool by setting the Dynamic Library Install Name within the build settings. Here's an example that allows the app executable to load the .dylib from ../Frameworks/:

enter image description here

查看更多
倾城 Initia
7楼-- · 2019-01-03 01:25

For anyone coming to this page because they got this error trying to link a third party framework to their project using Xcode 6.3.1, the problem I ran into was because the library was being created with an older version of the compiler using a different version of swift. The only way to fix this for me was to re-build the framework.

Another reason you might get this is stated in an Apple technical doc..

If you are building an app that does not use Swift but embeds content such as a framework that does, Xcode will not include these libraries in your app. As a result, your app will crash upon launching with an error message looking as follows:

set the Embedded Content Contains Swift Code (EMBEDDED_CONTENT_CONTAINS_SWIFT) build setting to YES in your app

Here is the link to the full Apple doc that explains it here

查看更多
登录 后发表回答