当我试图在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可执行文件

其他回答

对于那些仍然有这个问题的人:

这是苹果方面一直存在的问题,对我来说有效的方法是升级到ios 13.4(测试版)。装好后效果很好。

我在这里试图运行一个我刚刚用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)

在目标的General选项卡中,有一个称为框架、库和嵌入式内容的部分

点击+号,添加所需的框架,崩溃就解决了。

对于我的框架,我使用的是作为git子模块添加的Xcode子项目。

我相信我得到这个错误,因为我正在与一个不同的签名团队签署框架,而不是我的主应用程序。忘记切换到框架)

解决方案是不在框架项目内签名。相反,在主应用程序的目标>通用>框架,库和嵌入式内容部分,通过Embed & sign对框架进行签名。

如果我选择不嵌入或嵌入没有签名,我反而得到错误:

框架不能在使用库验证的进程中使用:映射文件没有cdhash,完全unsigned?代码至少要有特别签名。

对于某些人来说,这就像为动态库设置系统路径一样简单。在OS X上,这就像设置DYLD_LIBRARY_PATH环境变量一样简单。看到的:

是否可以在Mac OS X上使用DYLD_LIBRARY_PATH ?它的动态库搜索算法是什么?