Macos dyld:库未加载。。。原因:找不到图像

Macos dyld:库未加载。。。原因:找不到图像,macos,dylib,dyld,otool,install-name-tool,Macos,Dylib,Dyld,Otool,Install Name Tool,当尝试运行在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中。我认为问题在于,可执行文件只能在它所在的目录中查找,因为当我将“li

当尝试运行在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”粘贴到其中时,它不再介意了。不幸的是,它抱怨找不到下一个boost库

有没有一种简单的方法可以解决这个问题?

您可以将命令与可执行文件的-L选项一起使用,该选项将显示可执行文件希望这些库位于的位置


如果需要更改这些库的路径,请使用命令,该命令允许您设置库的路径。

查找所有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)
对于每个
libboost\u 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)
手册页:

EDIT不久前,我编写了一个python脚本(
copy\u dylibs.py
),用于在构建应用程序时自动解决所有这些问题。它将把
/usr/local
/opt/local
中的所有库打包到应用程序包中,并修复对这些库的引用以使用
@rpath
。这意味着您可以使用自制软件轻松安装第三方库,并将其打包


现在,我已在上公开了此脚本。

对于任何访问此页面的人,因为他们在尝试使用Xcode 6.3.1将第三方框架链接到其项目时出错,我遇到的问题是,库是使用不同版本的swift使用较旧版本的编译器创建的。对我来说,解决这个问题的唯一方法就是重新构建框架

另一个你可能会看到的原因是在苹果的技术文档中

如果您正在构建一个不使用Swift但嵌入内容(如框架)的应用程序,Xcode将不会在您的应用程序中包含这些库。因此,您的应用程序在启动时将崩溃,并显示如下错误消息:

在应用程序中,将嵌入内容包含Swift代码(嵌入内容包含Swift)生成设置设置设置为“是”


这是完整的苹果文档的链接,它解释了我在这里试图运行一个我刚刚用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)

对于某些人来说,这可能与为动态库设置系统路径一样简单。在OSX上,这与设置
DYLD\u LIBRARY\u PATH
环境变量一样简单。见:


在目标公司的
常规
选项卡中,有一个名为
框架、库和嵌入式内容的部分

单击
+
标志,添加所需的
框架
,崩溃得到解决


我在尝试使用rvm安装ruby 2.3.1时遇到了这个错误。它首先告诉我运行
brew update
,我就是这么做的,然后当我尝试运行
rvm install ruby-2.3.1
时,我收到了这个问题中的错误


修复方法是首先运行
brew升级
,显然根据这个问题,您需要同时执行
brew更新
&&
brew升级
。完成后,我终于可以安装ruby 2.3.1了

您可以使用
sudo安装\u name\u工具-change
change dylib path 及
sudo install\u name\u tool-id
change dylib name

我通过
brew install libpng

来修复它,这对我来说很有效:

brew upgrade node

我在引用线程中的SIGABRT错误时遇到了应用程序崩溃问题。崩溃概述是dyld库未加载,图像未找到类似的内容

这可以在Xcode 9.3中看到。我发现的原因是Xcode没有动态拾取库,所以我不得不手动执行,这解决了我的崩溃问题

请按照以下步骤操作:

  • 进入构建阶段
  • 点击顶部的“+”按钮并选择“新建复制文件阶段”
  • 选择Destination as Frameworks并点击下面的“+”按钮添加文件
  • 选择下面的添加其他,单击CMD+SHIFT+G并粘贴下面的路径,
    /Applications/Xcode.app/Contents/Developer/toolschains/xcodefault.xctoolschain/usr/lib/swift/iphoneos
  • 现在您将能够看到一些swift动态库,选择扩展名为.dylib的所有swift库并单击open

    这些将添加到应用程序的常规选项卡中的嵌入式二进制文件中

    在项目文件夹中创建新组并添加所有这些库


    现在运行你的应用程序。

    对于任何使用不同库或包体验相同内容的人,@user3835452是正确的。我在尝试运行
    composer
    时发现此消息:

    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安装openldap
    ,它修复了它。请注意,我已经运行了
    brew update
    brew upgrade
    ,但只有在手动安装
    openldap
    之后,它才真正起作用。

    在将Mac OS升级到Mojave之后。我试图通过
    warn
    命令安装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,请将
    DYLIB\u INSTALL\u NAME\u 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动态库项目中目标->构建设置动态库安装名称库设置为@rpath

    我通过重新安装自制软件修复了此问题

    卸载

    ruby-e“$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
    

    安装

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

    我通过使用
    产品>清洁构建文件夹
    (CommandShiftK)修复了此问题,该文件夹创建了一个新的清洁构建
    pod update
    
    set_target_properties(
        MyTarget
        PROPERTIES
        XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS
        "@executable_path/Frameworks @loader_path/Frameworks"
    )
    
    set_target_properties(
            MyTarget
            PROPERTIES
            XCODE_ATTRIBUTE_DYLIB_INSTALL_NAME_BASE 
            "@rpath"
    
    dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
        Referenced from: /usr/local/bin/mongoexport
        Reason: image not found
    Abort trap: 6
    
    brew switch openssl 1.0.2s
    
    brew update
    brew upgrade
    brew cleanup
    
    dyld: Library not loaded: @rpath/PINOperation.framework/PINOperation
      Referenced from: /private/var/containers/Bundle/Application/4C5F5E4C-8B71-4351-A0AB-C20333544569/Tellus.app/Frameworks/PINRemoteImage.framework/PINRemoteImage
      Reason: image not found
    
    $ rm -rf venv
    $ python -m venv venv