macos - 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
我已经安装了boost库,它们位于/opt/local/lib.我认为这个问题与可执行文件有关,只查看它所在的目录,就像我在那里粘贴'libboost_atomic.dylib'一样,它不介意 关于它了。 不幸的是,它抱怨它无法找到下一个升级库。
有没有一种简单的方法来解决这个问题?
12个解决方案
119 votes
找到所有的boost库:
$ 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)
并为每个.dylib,做:
$ install_name_tool -change @executable_path/libboost_something.dylib /opt/local/lib/libboost_something.dylib exefile
最后再次验证使用.dylib:
$ 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)
联机信息页:.dylib .dylib
编辑虽然这不一定与第三方库(如boost或Qt)有关,但如果您从同一个Xcode项目生成应用程序和.dylib,那么您可以通过在其中设置动态库安装名称而不使用install_name_tool来实际执行此操作 构建设置。 这是一个允许应用程序可执行文件从../Frameworks/加载.dylib的示例:
trojanfoe answered 2019-05-18T16:11:54Z
58 votes
在目标的+中,有一个framework。
添加所需的+并解决崩溃问题。
点击+登录并添加framework
Himanshu padia answered 2019-05-18T16:12:37Z
27 votes
对于某些人来说,这可以像为动态库设置系统路径一样简单。 在OS X上,这与设置DYLD_LIBRARY_PATH环境变量一样简单。 看到:
在Mac OS X上使用DYLD_LIBRARY_PATH是否可以? 而且,它的动态库搜索算法是什么?
markshiz answered 2019-05-18T16:13:13Z
16 votes
这对我有用:
brew upgrade node
oshaiken answered 2019-05-18T16:13:41Z
10 votes
当我尝试使用rvm安装ruby 2.3.1时出现此错误。 它首先告诉我运行brew upgrade,我做了,然后当我尝试运行brew update时,我收到了这个SO问题的错误。
修复是首先运行brew upgrade,显然根据这个superuser.com问题你需要做两个brew update&& brew upgrade.一旦完成,我终于可以安装ruby 2.3.1。
IonicBurger answered 2019-05-18T16:14:25Z
5 votes
您可以将带有-L选项的otool命令用于可执行文件,该命令将显示可执行文件期望这些库的位置。
如果需要更改的路径,请使用install_name_tool命令,该命令允许您设置库的路径。
TheDarkKnight answered 2019-05-18T16:15:02Z
4 votes
我来到这里试图运行我刚刚使用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)
Lucio Paiva answered 2019-05-18T16:15:38Z
2 votes
我通过brew install libpng解决了这个问题
user3835452 answered 2019-05-18T16:16:09Z
1 votes
您可以使用sudo install_name_tool -change更改dylib路径和sudo install_name_tool -id更改dylib名称
hailuodev answered 2019-05-18T16:16:39Z
0 votes
对于任何人来到这个页面,因为他们试图使用Xcode 6.3.1将第三方框架链接到他们的项目时遇到此错误,我遇到的问题是因为使用不同版本的旧版本编译器创建了库 快速的。 解决这个问题的唯一方法是重新构建框架。
您可能会得到这个的另一个原因在Apple技术文档中说明..
如果您正在构建一个不使用Swift但嵌入内容的应用程序,那么Xcode将不会在您的应用程序中包含这些库。 因此,您的应用会在启动时崩溃,并显示如下错误消息:
在您的应用中将嵌入式内容包含Swift代码(EMBEDDED_CONTENT_CONTAINS_SWIFT)构建设置设置为YES
以下是完整Apple文档的链接,在此处对其进行了解释
bolnad answered 2019-05-18T16:17:38Z
0 votes
我遇到了在线程中引用SIGABRT错误的应用程序崩溃问题。崩溃的概述是没有加载dyld库而且找不到像这样的图像。
这是在xcode 9.3版本中看到的。我发现的原因是xcode没有动态地拾取库,所以我不得不手动完成它解决了我的崩溃问题。
请按照以下步骤操作:第1步:转到构建阶段第2步:点击顶部的“+”按钮,然后选择“新建复制文件阶段”步骤3:选择Destination as Frameworks并点击下面的'+'按钮添加文件。第4步:选择下面的添加其他,单击CMD + SHIFT + G并粘贴以下路径,/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos
现在您将能够看到一些快速的dylib,选择所有带有.dylib扩展名的swift库并单击open。
这些将添加到app的常规选项卡中的嵌入式二进制文件中。
在项目文件夹中创建一个新组并添加所有这些库。
现在运行你的应用程序
快乐的编码
Miya Mirza answered 2019-05-18T16:19:01Z
0 votes
对于使用不同库或包进行相同操作的任何人,@ user3835452都在正确的轨道上。 我在尝试运行brew install openldap时发现此消息:
dyld: Library not loaded: /usr/local/opt/openldap/lib/libldap-2.4.2.dylib
Referenced from: /usr/local/opt/php@7.1/bin/php
Reason: image not found
Abort trap: 6
在尝试了很多不同的方法后,我刚刚运行了brew install openldap并修复了它。 请注意,我已经运行了brew update和brew upgrade,但只有在我手动安装openldap后才能实际运行。
brunouno answered 2019-05-18T16:19:39Z