1

我有一个具有以下依赖项的外部库“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 上运行

4

1 回答 1

1

好的,我意识到第一个“依赖项”本身并不是依赖项,它更像是 lib 的名称。使用的时候也可以看到

otool -D libspecial.dylib
    @rpath/libspecial.dylib

所以这个命令是错误的。它可以用

install_name_tool -id libspecial.dylib libspecial.dylib
于 2015-11-24T15:06:49.320 回答