链接新dylib时删除默认搜索路径。

时间:2016-07-18 08:29:56

标签: xcode macos linker shared-libraries

我正在尝试将新的dylib链接到我的可执行文件,但是它将它与绝对路径(otool -L ../Build/Products/Debug/myexec ../Build/Products/Debug/myexec: /usr/local/lib/libmylib.dylib (compatibility version 1.0.0, current version 1.0.0) )链接起来如何从已使用的共享库中删除此默认路径?

{{1}}

1 个答案:

答案 0 :(得分:1)

在OS X上,install_name_tool命令可以更改动态链接库。

  • -change old new binary选项会更改一个或多个库'地点。
  • -rpath old new binary会将rpath重置为新路径。
  • -delete_rpath old binary将删除当前的。
  • -add_rpath new binary将添加新路径。

但是,可能会遇到一些小问题:看起来这个cmd行工具只能设置二进制文件的rpath而不是系统rpath,因此/usr/local/lib无法删除-delete_rpath选项。

在这种情况下,唯一的选择是-change old new

检查rpath:

$ otool -l that_exec |grep -C 5 LC_RPATH
      cmd LC_DATA_IN_CODE
  cmdsize 16
  dataoff 13152
 datasize 0
Load command 40
          cmd LC_RPATH
      cmdsize 32
         path /the_binarys_rpath/here (offset 12)