【问题标题】:Remove default search path when linking new dylib.链接新 dylib 时删除默认搜索路径。
【发布时间】:2016-07-18 08:29:55
【问题描述】:

我正在尝试将新的 dylib 链接到我的可执行文件,但它将它与绝对路径 (/usr/local/lib/) 链接我如何从使用的共享库中删除此默认路径?

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)

【问题讨论】:

    标签: xcode macos linker shared-libraries


    【解决方案1】:

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

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

    不过,可能有个小麻烦:这个命令行工具好像只能设置二进制的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)
    

    【讨论】:

      猜你喜欢
      • 2012-11-26
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-28
      相关资源
      最近更新 更多