brew php dyld,macos - dyld:库未加载...原因:图像未加载

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的示例:

uvny7.png

trojanfoe answered 2019-05-18T16:11:54Z

58 votes

在目标的+中,有一个framework。

添加所需的+并解决崩溃问题。

xR102.png

点击+登录并添加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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值