install_name_tool无法使用更改“因为较大的更新加载命令不适合”。

7

我需要使用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

1个回答

10

问题出在您的二进制文件中,而不是库文件。按照警告所建议的方式做即可。将-headerpad_max_install_names添加到用于链接您的二进制文件的ld标志中。如果您使用Xcode,则可以将其放置在目标的其他链接器标志构建设置中。


我使用make构建我的C ++动态库my.so,然后通过install_name_tool正确设置路径。在源文件中进行了一些更改后,我收到了该消息。我需要在哪里进行更改以修复它? - ZedZip
你的 makefile 必须有设置编译器标志的方法。你需要在那里添加它。 - Jason

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接