GNU Objcopy语法和使用

一、GNU Objcopy:

objcopy被用来复制一个目标文件的内容到另一个文件中,可以使用不同于源文件的格式来输出目的文件,即可以进行格式转换。

使用的选项参数:

input-file、out-file

参数input-file和outfile分别表示输入目标文件(源目标文件)和输出目标文件(目的目标文件)。如果在命令行中没有明确地指定outfile,objcopy将创建一个临时文件来存放目标结果,然后使用input-file的名字重命名这个临时文件(此时,原来的input-file将被覆盖)。

-I bfdname或--input-target=bfdname

用来指明源文件的格式,bfdname是BFD库中描述的标准格式名。如果不指明源文件格式,objcopy会自己去分析源文件的格式,然后去和BFD中描述的各种格式比较,从而得知源文件的目标格式名。

-O bfdname或--output-target=bfdname

使用指定的格式来输出文件,bfdname是BFD库中描述的标准格式名。

-F bfdname或--target=bfdname

同时指明源文件、目的的文件的格式。将源目标文件中的内容复制到目的目标文件的过程中,只进行复制不做格式转换,源目标文件是什么格式,目的目标文件就是什么格式

-R sectionname或--remove-section=sectionname

从输出文件中删掉所有名为sectionname的段。该选项可以多次使用

-S或--strip-all

不从源文件中复制重定位信息和符号信息到目标文件中去。

-g或--strip-debug

不从源文件中复制调试符号到目标文件中去

举例:

将.elf转换成.bin文件命令:

objcopy -O binary -R .note -R .comment -S *.elf  *.bin

  • #使用 -O binary (或--out-target=binary) 输出为原始的二进制文件
  • #使用 -R .note  (或--remove-section)    输出文件中不要.note这个section,缩小了文件尺寸
  • #使用 -R .comment(或--remove-section)   输出文件中不要.comment这个section,缩小了文件尺寸
  • #使用 -S (或 --strip-all)输出文件中不要重定位信息和符号信息,缩小了文件尺寸 

或者可以使用命令:

objcopy -O binary  --gap-fill 0xff  *.elf  *.bin

#--gap-fill 0xff 指定使用“0xff”填充段与段间的空闲区域

生成HEX命令:

objcopy -O ihex...

 

你可能感兴趣的:(Linux)