我有一个命令行可执行文件,其中包含指向 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 中。可以预见的是,这也没有解决问题。
如何修复我的编译过程,以便最终可以更改链接 dylib 的路径install_name_tool
?