install_name_tool 无法使用更改 "because larger updated load commands do not fit"

install_name_tool can't use change "because larger updated load commands do not fit"

我需要用 install_name_tool 重新链接一个文件。有问题的文件让我更改了一个 dylib 路径,但是当我更改第二个(共 7 个)时,我收到此错误:

install_name_tool: changing install names or rpaths can't be redone for: some/library (for architecture i386) because larger updated load commands do not fit (the program must be relinked, and you may need to use -headerpad or -headerpad_max_install_names)

谷歌搜索后,我发现文件中的新路径根本没有足够的空间,我可以使用 ld 工具或 libtool 来修复这个。但是,我无法弄清楚如何。我没有这个库的源代码,所以我无法重新编译它。

我有任何方法来更新这个文件的所有dylib路径吗?任何帮助将不胜感激!


我在 osx 10.10 我正在使用的命令:install_name_tool -change old/dylib/path.dylib new/dylib/path.dylib file/to/update

问题出在您的二进制文件中,而不是库中。执行警告建议的操作。将 -headerpad_max_install_names 添加到用于 link 您的二进制文件的 ld 标志。如果您正在使用 Xcode,您可以将其放入目标的其他链接器标志构建设置中。