Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 无法在osx上更改@rpath_Macos_Osx Elcapitan_Rpath_Otool_Install Name Tool - Fatal编程技术网

Macos 无法在osx上更改@rpath

Macos 无法在osx上更改@rpath,macos,osx-elcapitan,rpath,otool,install-name-tool,Macos,Osx Elcapitan,Rpath,Otool,Install Name Tool,我有一个外部库'libspecial.dylib',具有以下依赖项 otool -L libspecial.dylib [11:20:59] libspecial.dylib: @rpath/libspecial.dylib (compatibil

我有一个外部库'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
但这只替换了第二个依赖项(事实上,还有更多的依赖项,所有的依赖项都被替换了,但没有替换指向库本身的第一个依赖项):

我不知道为什么我不能改变第一依赖。有什么想法吗


在OSX 10.11.1上运行时,我意识到第一个“依赖项”本身不是依赖项,而是库的名称。使用时我也能看到它

otool -D libspecial.dylib
    @rpath/libspecial.dylib
所以这个命令是错误的。它可以用

install_name_tool -id libspecial.dylib libspecial.dylib

第一个引用是库本身的引用,所以我不希望您可以更改它。但是,我也不希望它一开始就有@rpath/。我见过的所有dylib都是以自己的名字开始的。您能将其设置为just libspecial.dylib吗?您是对的,在这个库的上一个版本中,对自身的引用没有@rpath,并且一切正常。但遗憾的是,我无法将其更改为/tmp/libspecial.dylib和libspecial.dylib。这难道不影响二进制链接时的默认加载路径吗?我认为这在运行时并不重要。
install_name_tool -id libspecial.dylib libspecial.dylib