macos - 使用 install_name_tool 修复 dylib 文件中的路径

标签 macos dynamic-linking dylib otool install-name-tool

在将操作系统更新到 El Capitan 后,我正在尝试编译我的 C++ 项目。然而,我在此过程中遇到了一些障碍:

dyld: Library not loaded: pathB/libIceUtil.34.dylib
Referenced from: pathA/libSlice.34.dylib
Reason: image not found

问题是 pathB 不存在。当我运行 otool -L pathA/libIceUtil.34.dylib 时,我得到了

pathA/libIceUtil.34.dylib:
pathB/libIceUtil.34.dylib (compatibility version 0.0.0, current version 0.0.0)

install_name_tool -change pathB/libIceUtil.34.dylib pathA/libIceUtil.34.dylib pathA/libIceUtil.34.dylib 没有解决问题。一个article提到使用 libtool。知道如何解决这个问题吗?

最佳答案

install_name_tool -change 的第一个参数不正确(它与 otool -L 打印的内容不匹配)。使用:

install_name_tool -change \
    /Volumes/Data/builder/Proj/gcc4/thirdparty/Ice-3.4.2-x86_64/lib/libIceUtil.34.dylib \
    /Users/xeroqu/lib/Proj/gcc4/thirdparty/Ice-3.4.2-x86_64/lib/libIceUtil.34.dylib \
    /Users/xeroqu/lib/Proj/gcc4/thirdparty/Ice-3.4.2-x86_64/lib/libIceUtil.34.dylib

关于macos - 使用 install_name_tool 修复 dylib 文件中的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33296421/

相关文章:

cocoa - 在 Cocoa 中绑定(bind)按钮操作来关闭应用程序

java - 支持同一 COD 文件中具有不同功能的不同 Blackberry 操作系统版本

c - 仅在满足依赖关系时才加载共享库

ios - Invalid Bundle Error(可能是 CocoaPods 导致的错误)

c++ - 从 .dylib 转换为 .so

c - IrDA 发现的默认设置(波特率、位、停止、奇偶校验、流量控制等)

mysql - 在 Mac OS X 中创建的 MySQL 数据库文件夹存储在哪里?

python - 如何在 mac 上将 openalpr 与 python 绑定(bind)?

matlab - Mex 函数在重新编译后未更新

environment-variables - 将加载命令添加到 mach-o 二进制文件