我想重命名目标文件(.o)中的符号,它与 Mac 上的 binutilsobjcopy --redefine-syms
工具等效。
我发现没有arm-apple-darwin10-objcopy
。我尝试了 MacPorts 的arm-elf-binutils
端口,也尝试了一些尝试otool
,segedit
无论成功与否。
请问有什么想法吗?
听起来像是Agner Fog 的objconv的工作。
从公告:
我现在已经完成了对我之前帖子中提到的目标文件转换器中的 Mach-O 文件的完全支持。您可以将它用作缺少的 objcopy 实用程序的替代品。
Objconv 可用于以下目的:
在所有 x86 和 x86-64 平台的 Mach-O、ELF、COFF 和 OMF 格式之间转换目标文件和库/存档文件。更改目标文件中的符号名称,使符号变弱,为符号添加别名。
跨平台(Mac、Linux、BSD、Windows)构建、修改和转换静态库文件(*.a、*.lib)
转储目标文件和可执行文件
反汇编目标文件和可执行文件。非常好的反汇编程序。
我知道我正在从死里复活这个帖子,但是......
我也突然需要这样做,发现这objcopy
在 OSX 上不起作用有点令人震惊。但我认为可以使用ld
来达到相同的效果:
ld -r input.o -o output.o -alias oldsymbol newsymbol -unexported_symbol oldsymbol
这实际上只是以新名称为符号创建别名并隐藏旧名称。
我还没有机会做很多测试,但是查看输出文件nm
显示它似乎在做正确的事情。
objconv 目前不适用于 ARM,因此该选项不适用于 iPhone。不过,对于 mac osx x86/x64 使用从 elf 到 mach-o 的 objconv 应该没有问题。如果您找到 ARM 的解决方案,请告诉我