我有一个命令行可执行文件,其中包含指向dylib的链接 - 当分发时 - 不会在otool -L
返回的指定位置。
例如,给定一个名为foo
的二进制文件:
$ otool -L foo
/opt/local/lib/libgcc/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.18.0)
...
在我的安装程序中,我有一个安装后脚本,尝试使用install_name_tool -change
来解决此问题,以便foo
链接到新位置的dylib。
例如:
$ sudo install_name_tool -change /opt/local/lib/libgcc/libstdc++.6.dylib /somewhere/else/more/sensible/libstdc++.6.dylib foo
但是这个改变被忽略了并且无声地失败了。当我再次运行otool -L
时:
$ otool -L foo
/opt/local/lib/libgcc/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.18.0)
...
没有任何改变。
我正在编译胖二进制文件并尝试将-headerpad_max_install_names
编译标志添加到32位Makefile中。这并没有解决问题,因为install_name_tool -change
仍然无声地失败。
我读到-headerpad_max_install_names
在64位平台上什么都不做,但我还是把它添加到了64位的Makefile中。可以预见的是,这也没有解决问题。
如何修复编译程序,以便最终可以使用install_name_tool
更改链接的dylib的路径?