Macos dyld:库未加载。。。原因:找不到图像
当尝试运行在Mac OS X中发送的可执行文件时,我得到以下错误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
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没有动态拾取库,所以我不得不手动执行,这解决了我的崩溃问题 请按照以下步骤操作:
/Applications/Xcode.app/Contents/Developer/toolschains/xcodefault.xctoolschain/usr/lib/swift/iphoneos
现在运行你的应用程序。对于任何使用不同库或包体验相同内容的人,@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