install_name_tool -change以静默方式失败,并忽略-headerpad_max_install_names标志

时间:2013-09-17 19:31:09

标签: macos gcc dylib otool install-name-tool

我有一个命令行可执行文件,其中包含指向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的路径?

0 个答案:

没有答案