objcopy用于将object的部分获全部内容拷贝到另一个object,从而可以实现格式的变 换。
objcopy可用用于将文件转换成S-record格式或者raw二进制格式。
例如,
xxxx-elf-objcopy –O srec test.o test.s19
则将test.o转换成s-record文件中。通常涉及到text段。
xxxx-elf-objcopy –O binary test.o test.bin
则将test.o转换成raw binary文件格式。
当将object文件转换成raw binary格式时,通常将去除掉symbols和relocation信息。在生成s-record过程中,有时需要用选项“-S”,“-R”去除掉 binary文件,s-record文件不需要的相应信息。
此外,还需要注意到使用objcopy不能够改变大、小endian。
选项
Desc
infile/outfile
源文件/目标文件
-I bfdname
--input-target=bfdname
输入文件的bfdname,可取值elf32-little,elf32-big等,可用 用objdump –I查看相应的信息
-O bfdname
--output-target=bfdname
输出文件的bfdname
-F bfdname
--target=bfdname
指定输入、输出文件的bfdname,目标文件格式
-j sectionname
--only-section=sectionname
只将由sectionname指定的section拷贝到输出文件
-R sectionname
--remove-section=sectionname
去除掉由sectionname指定的section
-S
--strip-all
去掉源文件的符号信息和relocation信息
-g
--strip-debug
去除掉调试符号信息和相关的段
-K symbolname
--keep-symbol=symbolname
保留由symbolname指定的符号信息
-N symbolname
--strip-symbol=symbolname
去除掉由symbolname指定的符号信息
-G symbolname
--keep-global-symbol=symbolname
-L symbolname
--localize-symbol=symbolname
-W symbolname
--weaken-symbol=symbolname
-w
--wildcard
-x
--discard-all
-X
--discard-locals
处理符号
-b byte
--byte=byte
每byteth byte中保留1 byte
-i interleave
--interleave=interleave
每隔interleave字节拷贝1 byte
--gap-fill val
在section中填充val
--set-start val
设定新文件的start address
--change-start incr
--adjust-start incr
调整start address
--change-address incr
--adjust-vma incr
调整所有sections的VMA(virtual memory address)和LMA(linear memory address)。
--change-section-address
section{=,+,-}val
--adjust-section-vma section
{=,+,-}val
调整指定section的VMA/LMA地址
--set-section-flags section=flag
指定指定section的flag,flag的取值可以alloc,contents, load, noload, readonly, code, data, rom, share, debug
--add-section sectionname=filename
添加一个section,该section的内容为filenmae的内容
--rename-section oldname=
newname[,flags]
更改section的名
-V
--version
objcopy的version number
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/huangxb_csu/archive/2008/10/31/3193824.aspx