rwo*_*lst 228 macos dylib otool dyld 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
Run Code Online (Sandbox Code Playgroud)
我已经安装了boost库,它们位于/opt/local/lib.我认为这个问题与可执行文件有关,只查看它所在的目录,就像我在那里粘贴'libboost_atomic.dylib'一样,它不再关心它了.不幸的是,它抱怨它无法找到下一个升级库.
有没有一种简单的方法来解决这个问题?
tro*_*foe 144
找到所有的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)
Run Code Online (Sandbox Code Playgroud)
对于每一个libboost_xxx.dylib,做:
$ install_name_tool -change @executable_path/libboost_something.dylib /opt/local/lib/libboost_something.dylib exefile
Run Code Online (Sandbox Code Playgroud)
最后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)
Run Code Online (Sandbox Code Playgroud)
联机帮助页: otool install_name_tool
编辑前一段时间我写了一个python脚本(copy_dylibs.py)来构建应用程序时自动解决所有这些问题.它将从打包所有的库/usr/local或/opt/local到应用程序包和修复那些库参考使用@rpath.这意味着您可以使用Homebrew轻松安装第三方库并轻松打包它们.
我现在已经在github上公开了这个脚本.
Him*_*dia 94
在目标中General tab,有一个Embedded Binaries field.
添加必需framework和崩溃已解决.
点击+标志并添加framework
osh*_*ken 67
这对我有用:
brew upgrade node
Run Code Online (Sandbox Code Playgroud)
Wal*_*tes 34
这应该可以解决问题
brew update
brew upgrade
brew cleanup
Run Code Online (Sandbox Code Playgroud)
mar*_*hiz 31
对于某些人来说,这可以像为动态库设置系统路径一样简单.在OS X上,这与设置DYLD_LIBRARY_PATH环境变量一样简单.看到:
在Mac OS X上使用DYLD_LIBRARY_PATH是否可以?而且,它的动态库搜索算法是什么?
Mic*_*ich 28
将Mac OS升级到Mojave之后。我试图通过yarn错误命令来安装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
Run Code Online (Sandbox Code Playgroud)
已解决:
brew update
brew upgrade
Run Code Online (Sandbox Code Playgroud)
Ion*_*ger 13
当我尝试使用rvm安装ruby 2.3.1时出现此错误.它首先告诉我运行brew update,我做了,然后当我尝试运行时rvm install ruby-2.3.1,我收到了这个SO问题中的错误.
修复是第一次运行brew upgrade,显然根据这个superuser.com问题你需要做两个brew update&& brew upgrade.一旦完成,我终于可以安装ruby 2.3.1.
Jay*_*der 10
现在 Xcode 已经升级了他们的 IDE,他们已经稍微改变了它的功能。
它曾经被分成单独的部分,如上所示,“嵌入式二进制文件”和“链接框架和库”作为单独的部分。
现在,它是一个组合部分,右侧有关于应该嵌入什么的下拉菜单。
起初这让我感到困惑,但现在完全有道理。
atu*_*tri 10
如果您使用的是 Xcode 11 以上版本:
转到General选项卡并在Frameworks, Libraries, and Embedded Content部分中添加框架。
重要提示:默认情况下,它可能被标记为Do Not Embed,将其更改为Embed Without Signing如图所示,您就可以开始使用了。
对于低于 11 的 Xcode 版本:
只需在Embedded Binaries部分中添加框架即可完成。
干杯!
Kwe*_*wex 10
要解决我的 Macbook Catalina 10.15.4 上的以下错误:
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
Run Code Online (Sandbox Code Playgroud)
我运行了下面的命令并解决了上面的问题:
brew switch openssl 1.0.2s
Run Code Online (Sandbox Code Playgroud)
我来到这里试图运行一个使用CMake编译的程序。当我尝试运行它时,它抱怨说:
dyld: Library not loaded: libboost_system.dylib
Referenced from: /Users/path/to/my/executable
Reason: image not found
Run Code Online (Sandbox Code Playgroud)
我规避了告诉CMake使用Boost的静态版本,而不是让它使用动态版本的问题:
set(Boost_USE_STATIC_LIBS ON)
Run Code Online (Sandbox Code Playgroud)
使构建阶段中的框架可选对我有用。
在 Xcode -> Target -> Build Phases -> Link Binary with Libraries -> 确保新添加的框架(如果有)被标记为 Optional
| 归档时间: |
|
| 查看次数: |
245088 次 |
| 最近记录: |