请阅读【ARM GCC 编译专栏导读】
上篇文章:ARM 嵌入式 编译系列 5 – GCC 内建函数 __builtin 详细介绍
下篇文章:ARM 嵌入式 编译系列 7 – ARM GCC 链接脚本详细讲解
GCC objcopy 简介
objcopy 是 GNU二进制工具集(binutils)的一部分,主要用于复制和转换目标文件。
在ARM GCC中,arm-none-eabi-objcopy
通常用于从链接后的ELF格式文件中提取出二进制文件或其他格式的内容,这对于嵌入式开发特别有用,因为这样的文件可以直接烧写到微控制器的闪存中。
objcopy 常用参数
下面是一些常用的参数:
-O
:表示输出文件的格式。常见的格式有:binary(二进制文件)、ihex(Intel HEX文件)、srec(Motorola SREC文件)、elf32-littlearm(小端字节序的ELF文件)等;
-S
(或 --strip-all
):去除所有的符号信息和重定位信息,使得输出文件更小;
-j
:仅复制指定的section。例如,-j .text
表示只复制.text段的内容;-R
(或--remove-section
),输出文件中不要重定位信息和符号信息,缩小了文件尺寸。
下面是一个使用示例:
arm-none-eabi-objcopy -O binary -S -j .text -j .data myprogram.elf myprogram.bin
这行命令的意思是:从myprogram.elf
中提取出.text
段和.data
段的内容,并将它们转换为二进制文件myprogram.bin
。同时,所有的符号信息和重定位信息都会被去除。
注意:在使用arm-none-eabi-objcopy
时,你应当确保输入的ELF
文件已经正确链接。否则,你可能会得到一个无法在硬件上运行的二进制文件,此外,使用objcopy不能够改变大/小端。
$ arm-linux-objcopy -O binary -R .note -R .comment -S boot.elf boot.bin
GCC objdump 简介
GCC objdump
用于显示关于目标文件的信息。这些信息包括文件的头部信息、节区内容、符号表、重定位入口点等。使用 objdump
可以对二进制文件进行深入分析,这对于调试和理解程序的工作原理非常有用。
Objdump 支持大量的命令行选项,可以用来控制显示的信息的数量和类型。以下是一些主要的选项:文章来源:https://www.toymoban.com/news/detail-644588.html
-a, --archive-header
: 显示存档的头部信息;-d, --disassemble
: 反汇编代码段;-h, --section-headers
: 显示节区头部;-r, --reloc
: 显示重定位入口点;-s, --full-
文章来源地址https://www.toymoban.com/news/detail-644588.html
到了这里,关于【ARM 嵌入式 编译系列 6 -- GCC objcopy, objdump, readelf, nm 介绍】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!