无法更改 osx 上的@rpath
Unable to change @rpath on osx
我有一个外部库 '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
好吧,我意识到第一个 "dependency" 本身并不是依赖项,它更像是库的名称。我用
的时候也能看到
otool -D libspecial.dylib
@rpath/libspecial.dylib
所以命令是错误的。可以用
修复
install_name_tool -id libspecial.dylib libspecial.dylib
我有一个外部库 '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
好吧,我意识到第一个 "dependency" 本身并不是依赖项,它更像是库的名称。我用
的时候也能看到otool -D libspecial.dylib
@rpath/libspecial.dylib
所以命令是错误的。可以用
修复install_name_tool -id libspecial.dylib libspecial.dylib