当我试图在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 '在那里,它不再介意了。不幸的是,它会抱怨找不到下一个增强库。

有没有简单的方法来解决这个问题?


当前回答

Install_name_tool -add_rpath new_path可执行文件 Install_name_tool -delete_rpath old_path可执行文件

其他回答

修正:这种方法清除了这为我轻松…

我的CLI工具触发了同样的问题(即netdiscover),正在寻找:

/ usr / local / opt / libnet / lib / libnet。1 . dylib

当我搜索libnet.1的时候。Dylib, ls返回一个文件,但是是一个较新的版本:libnet.9.dylib

遵循本文中提出的方法,如何修复' Dyld:库未加载'在MacOS上的错误,我能够通过简单地创建一个符号链接指针,指向该工具正在寻找的文件(即,libnet.1.dylib),到我的系统上列出的新文件版本(即,libnet.9.dylib),…

在s /usr/地方/opt/李勃/李勃。9dylib / usr / local / opt / libnet / lib / libnet。1 . dylib

... 现在当我运行该工具时,它会毫无怨言地找到所需的依赖项!,:)

--AA

参考:

我通过重新安装Homebrew解决了这个问题

卸载

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

安装

ruby / usr / bin / e,“美元(卷毛-fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”

在我的情况下,这是节点是过时的,你需要升级后,去BigSur - brew升级节点

如果你使用Xcode 11以后:

进入“常规”选项卡,在“框架”、“库”和“嵌入式内容”部分中添加框架。

重要提示:默认情况下,它可能被标记为不嵌入,将其更改为嵌入而不签名,如图所示,你就可以开始了。

对于低于11的Xcode版本:

只需在嵌入式二进制文件部分中添加框架,就完成了。

干杯!

您可以对可执行文件使用otool命令和-L选项,这将显示可执行文件期望这些库的位置。

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