25

我想重命名目标文件(.o)中的符号,它与 Mac 上的 binutilsobjcopy --redefine-syms工具等效。

我发现没有arm-apple-darwin10-objcopy。我尝试了 MacPorts 的arm-elf-binutils端口,也尝试了一些尝试otoolsegedit无论成功与否。

请问有什么想法吗?

4

3 回答 3

5

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

公告

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

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

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

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

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

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

于 2011-06-20T06:27:56.983 回答
3

我知道我正在从死里复活这个帖子,但是......

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

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

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

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

于 2012-08-14T11:56:51.543 回答
1

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

于 2012-04-27T01:11:40.360 回答