代码之家  ›  专栏  ›  技术社区  ›  Gregory Pakosz

Mac/iPhone的objcopy等价物?

  •  22
  • Gregory Pakosz  · 技术社区  · 14 年前

    我想用类似于mac的binutils来重命名对象文件(.o)中的符号。 objcopy --redefine-syms 工具。

    我没有发现 arm-apple-darwin10-objcopy . 我试过MacPorts' arm-elf-binutils 而且还试着和 otool segedit 没有太多成功。

    有什么想法吗?

    3 回复  |  直到 7 年前
        1
  •  5
  •   Konrad Rudolph    7 年前

    听起来像是工作 Agner Fog's objconv .

    来自 announcement :

    我已经完成了对mach-o文件的全面支持,在我之前的文章中提到的对象文件转换器中。您可以使用它来替换缺少的objcopy实用程序。

    objconv可用于以下目的:
    为所有x86和x86-64平台转换mach-o、elf、coff和omf格式之间的对象文件和库/存档文件。

    更改对象文件中的符号名称,使符号变弱,向符号添加别名。

    跨平台(Mac、Linux、BSD、Windows)生成、修改和转换静态库文件(*.a、*.lib)

    转储对象文件和可执行文件

    反汇编对象文件和可执行文件。很好的拆卸工具。

        2
  •  3
  •   David Given    12 年前

    我知道我要把这篇文章从死里复活,但是…

    我突然也需要这样做,并且发现 objcopy 在OSX上不工作有点震惊。但我 认为 可以使用 ld 为了达到同样的效果:

    ld -r input.o -o output.o -alias oldsymbol newsymbol -unexported_symbol oldsymbol
    

    这实际上只是在新名称下为符号创建一个别名,并隐藏旧名称。

    我还没有机会做很多测试,但是查看输出文件 nm 显示它似乎在做正确的事情。

        3
  •  1
  •   iOSThing    13 年前

    objconv目前不适用于ARM,因此此选项不适用于iPhone。不过,对于MacOSX86/X64,从elf到mach-o使用objconv应该没有问题。如果你找到解决手臂问题的方法,请告诉我。