代码之家  ›  专栏  ›  技术社区  ›  Automatico

install_name_tool无法使用change“因为更大的更新加载命令不适用”

  •  7
  • Automatico  · 技术社区  · 10 年前

    我需要用 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 年前
        1
  •  10
  •   Jason    9 年前

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