问题
I would like to rename symbols inside object files (.o) with something that would be the Mac equivalent of binutils' objcopy --redefine-syms
tool.
I found no arm-apple-darwin10-objcopy
. I tried the MacPorts' arm-elf-binutils
port and also tried to play a bit with otool
and segedit
without much success.
Any ideas please?
回答1:
Sounds like a job for Agner Fog's objconv.
From the announcement:
I have now finished making full support for Mach-O files in the object file converter mentioned in my previous posts. You may use it as a replacement for the missing objcopy utility.
Objconv can be used for the following purposes:
Convert object files and library/archive files between Mach-O, ELF, COFF and OMF formats for all x86 and x86-64 platforms.Change symbol names in object files, make symbols weak, add alias names to symbols.
Build, modify and convert static library files (*.a, *.lib) across platforms (Mac, Linux, BSD, Windows)
Dump object files and executable files
Disassemble object files and executable files. Very good disassembler.
objconv manual
objconv.zip - source
回答2:
I know I'm resurrecting this post from the dead, but...
I have a sudden need to do this as well, and discovering that objcopy
doesn't work on OSX was a bit of a shock. But I think it's possible to use ld
to achieve the same effect:
ld -r input.o -o output.o -alias oldsymbol newsymbol -unexported_symbol oldsymbol
This really just creates an alias for the symbol under a new name and hides the old one.
I haven't had a chance to do much testing yet, but looking at the output file with nm
shows it seems to be doing the right thing.
回答3:
objconv does not currently work for ARM, so this option is not available for iPhone. It should be no problem to use objconv from elf to mach-o for mac osx x86/x64 though. Let me know if you found a solution for ARM
来源:https://stackoverflow.com/questions/3475854/an-objcopy-equivalent-for-mac-iphone