无法在osx上更改@rpath

时间:2015-11-24 10:37:58

标签: macos osx-elcapitan rpath otool install-name-tool

我有一个外部lib&libspecial.dylib'具有以下依赖性。

otool -L libspecial.dylib                                                                                                                          [11:20:59]
libspecial.dylib:
     @rpath/libspecial.dylib (compatibility version 1.0.0, current version 1.0.1)
     @rpath/libhelper.dylib  (compatibility version 1.0.0, current version 1.0.1)

因为@rpath导致问题我有一个脚本用真实路径替换所有@rpath。

install_name_tool -change @rpath/libspecial.dylib /tmp/libspecial.dylib libspecial.dylib
install_name_tool -change @rpath/libhelper.dylib  /tmp/libhelper.dylib  libspecial.dylib

但是这只取代了第二个依赖项(实际上有更多的依赖项,所有都被替换,但不是第一个指向lib本身的依赖项):

otool -L libspecial.dylib
libspecial.dylib:
     @rpath/libspecial.dylib (compatibility version 1.0.0, current version 1.0.1)
     /tmp/libhelper.dylib    (compatibility version 1.0.0, current version 1.0.1)

我不知道为什么我无法改变第一个依赖关系。有什么想法吗?

在OSX 10.11.1上运行

1 个答案:

答案 0 :(得分:1)

好的,我意识到第一个"依赖"这不是一个依赖,它更像是lib的名称。我也可以在使用

时看到它
otool -D libspecial.dylib
    @rpath/libspecial.dylib

所以命令错了。它可以用

修复
install_name_tool -id libspecial.dylib libspecial.dylib