相当于Mac / iPhone的objcopy?

时间:2010-08-13 10:07:26

标签: macos arm darwin binutils objcopy

我想将目标文件(.o)中的符号重命名为与binutils'objcopy --redefine-syms工具相当的Mac。

我找不到arm-apple-darwin10-objcopy。我尝试了MacPorts的arm-elf-binutils端口,并尝试使用otoolsegedit稍微有点成功。

有什么想法吗?

3 个答案:

答案 0 :(得分:5)

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

来自announcement

  

我现在已完成对我之前帖子中提到的目标文件转换器中的Mach-O文件的完全支持。您可以将其用作缺失的objcopy实用程序的替代。

     

Objconv可用于以下目的:
  为所有x86和x86-64平台转换Mach-O,ELF,COFF和OMF格式的目标文件和库/归档文件。

     

更改目标文件中的符号名称,使符号变弱,为符号添加别名。

     

跨平台(Mac,Linux,BSD,Windows)构建,修改和转换静态库文件(* .a,* .lib)

     

转储目标文件和可执行文件

     

反汇编目标文件和可执行文件。非常好的反汇编。

答案 1 :(得分:3)

我知道我正在从死里复活这篇文章,但是......

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

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

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

我还没有机会做太多测试,但是用nm查看输出文件表明它似乎正在做正确的事。

答案 2 :(得分:1)

objconv目前不适用于ARM,因此该选项不适用于iPhone。因此,对于mac osx x86 / x64,使用从elf到mach-o的objconv应该没问题。如果您找到ARM的解决方案,请告诉我