【问题标题】:OS X: dylib rpath wrong after compilingOS X:编译后 dylib rpath 错误
【发布时间】:2014-09-06 01:01:56
【问题描述】:

我正在从源代码构建 cyrus sasl2 库。库安装在 /usr/local/lib 中,头文件安装在 /usr/local/include/sasl 中,这是正确的。

但是,当我运行尝试使用它们的应用程序时,我得到:

dyld: Library not loaded: /libsasl2.dylib
  Referenced from: /usr/sbin/postdrop
  Reason: image not found
Trace/BPT trap: 5

在 lib 上运行 otool -L 显示错误的相对路径:

libsasl2.dylib:
  /libsasl2.dylib (compatibility version 3.0.0, current version 3.0.0)
  /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
  /usr/lib/libresolv.9.dylib (compatibility version 1.0.0, current version 1.0.0)

如何更改 make 编译库的方式,以便对正确的 rpath 进行编码? 我阅读了有关 install_name_tool 在库中更改它的信息,但使用“-change”似乎不起作用,因为正确的路径“/usr/local/lib/libsasl2.dylib”比当前编码的路径长。我不应该在我以某种方式构建库时设置它吗?

谢谢。

【问题讨论】:

    标签: dylib rpath otool


    【解决方案1】:

    install_name_tool -id "@rpath/libsasl2.dylib" "/usr/local/lib/libsasl2.dylib" 将更改 LC_ID_DYLIBlibsasl2.dylib。当 postdrop 链接到它时,它将被添加到 postdrop 的LC_LOAD_DYLIB。然后,您可以将/usr/local/libLC_RPATH 条目添加到postdrop,一切都会正常工作。

    【讨论】:

      猜你喜欢
      • 2016-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-15
      • 1970-01-01
      • 2012-09-23
      • 2012-12-01
      相关资源
      最近更新 更多