我想将目标文件(.o)中的符号重命名为与binutils'objcopy --redefine-syms
工具相当的Mac。
我找不到arm-apple-darwin10-objcopy
。我尝试了MacPorts的arm-elf-binutils
端口,并尝试使用otool
和segedit
稍微有点成功。
有什么想法吗?
答案 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的解决方案,请告诉我