【ARM 嵌入式 编译系列 10.3 -- GNU elfutils 工具小结】


请阅读【ARM GCC 编译专栏导读】



上篇文章:【ARM 嵌入式 编译系列 10.2 – 符号表与可执行程序分离详细讲解】
下篇文章:【ARM 嵌入式 编译系列 11 – GCC attribute((packed))详细介绍】

什么是 GNU elfutils?

GNU elfutils是一个开源的工具集,用于处理ELF(Executable and Linkable Format)格式的可执行文件、目标文件和共享库。ELF是一种常见的二进制文件格式,常用于Linux和其他类Unix系统。

GNU elfutils 常用工具有哪些?

以下是一些 GNU elfutils工具的简要介绍和使用示例:

  • readelf:用于查看ELF文件的详细信息,如段表、符号表、重定位表等。例如:readelf -a binary_file;

  • objdump:用于反汇编ELF文件,显示二进制代码的汇编指令。例如:objdump -d binary_file;

  • objcopy:用于复制、转换和删除ELF文件的各种部分。例如:objcopy -O binary input output , 将ELF文件转换为裸二进制文件;

  • nm:用于显示ELF文件的符号表。例如:nm binary_file;

  • strip:用于从ELF文件中删除符号和调试信息,以减小文件大小。例如:strip binary_file;

  • eu-unstrip 可以用 eu-unstrip 将调试信息合并回二进制文件;

  • eu-strip 可以用eu-strip将调试信息从二进制文件中分离出来, 示例:eu-strip --strip-debug --remove-comment -f myfile.debug myfile, 使用--strip-debug选项移除了 myfile 中的调试信息,并使用-f选项将调试信息保存到了myfile.debug文件中。

  • eu-elflint 可以用来检查和修复ELF文件中的符号。eu-elflint --reloc-debug-sections myfile, 使用--reloc-debug-sections选项修复了myfile中的调试符号。

这些只是GNU elfutils工具集中的一部分工具, 具体使用可以见前面系列文章

objcopy 常用参数有哪些?

在编译脚本中我们经常可以看到 objcopy 命令,下面简单介绍下 objcopy 常用的参数:

  • --only-keep-debug选项用于从目标文件中提取调试信息。

例如:

objcopy --only-keep-debug myprog myprog.debug

在这个例子中,objcopy将myprog中的调试信息提取出来,并存储到myprog.debug文件中。

  • --add-gnu-debuglink选项用于将提取的调试信息文件链接回原始的二进制文件。

例如:

objcopy --add-gnu-debuglink=myprog.debug myprog

在这个例子中,objcopymyprog.debug文件链接回myprog文件。这样,即使myprog文件没有包含调试信息,调试器(如gdb)也可以找到调试信息。

GNU binutils和GNU elfutils区别是什么?

GNU binutils和GNU elfutils都是GNU工具集的一部分,都包含用于处理二进制文件的工具,但它们的重点和功能有所不同。

  • GNU binutils:这是一组用于处理二进制文件的程序集,包含了如ld(链接器)、as(汇编器)、objdump(反汇编等)、nm(列出符号表)、strip(剥离符号和调试信息)等工具。这些工具主要用于创建、修改和分析二进制文件。

  • GNU elfutils:这是一个库和工具集,重点放在处理ELF(Executable and Linkable Format)格式的二进制文件和DWARF(一种调试信息格式)。其中包含了如libelf(操作ELF格式的库)、readelf(显示ELF文件信息)、eu-strip(剥离符号和调试信息,但比binutils的strip更强大)等工具。elfutils主要用于更复杂、更深入的二进制文件分析和调试任务,比如处理调试信息。

总的来说,GNU binutils更关注通用的二进制文件操作,而 GNU elfutils则更关注ELF格式和调试信息的处理。在日常开发中,可能会同时用到这两个工具集。

上篇文章:【ARM 嵌入式 编译系列 10.2 – 符号表与可执行程序分离详细讲解】
下篇文章:【ARM 嵌入式 编译系列 11 – GCC attribute((packed))详细介绍】

### 回答1: gcc-arm-none-eabi-10.3-2021.10是一款基于GCC开发的ARM微处理器编译工具链。这款编译工具链支持多种ARM架构的微处理器,包括Cortex-M系列、Cortex-R系列和Cortex-A系列等。通过使用该编译工具链,开发者可以快速地编译、调试和优化ARM微处理器上的应用程序。该工具链包含了C语言编译器、汇编器、连接器和标准库等工具,可以满足开发者进行各种ARM微处理器的开发和调试需求。此外,gcc-arm-none-eabi-10.3-2021.10还支持多种操作系统,包括Linux、Windows和macOS等,适用于各种开发环境,为ARM微处理器开发提供了强大的支持。总之,该编译工具链是ARM微处理器开发的重要工具之一,广泛应用于嵌入式系统、物联网设备、智能家居和机器人等领域。 ### 回答2: gcc-arm-none-eabi-10.3-2021.10是一种ARM嵌入式开发工具,具有多种功能和特性。它是由GNU开源软件基金会开发的一款ARM架构编译器,能够针对各种嵌入式系统,生成高效可靠的机器码。它支持多种微处理器芯片,包括Cortex M和Cortex R等。此版本的编译器在2021年10月发布,是一个最新的版本。 gcc-arm-none-eabi-10.3-2021.10是一款工具套件,包含了编译器,链接器,调试器和其他一系列辅助工具,可以方便地进行嵌入式系统的开发。使用它可以进行高效的编码,编译和执行程序,并能够方便地进行调试和优化。此工具套件支持多种平台,包括Linux,Windows和Mac OS等 此工具套件的一个主要特点是易于配置和使用。它具有友好的命令行界面和文档,可以帮助开发人员轻松完成编译和调试的任务。此外,它还支持多种开发环境,如Eclipse和Visual Studio等,提供了更为便捷的开发方式。 总体而言,gcc-arm-none-eabi-10.3-2021.10是一款强大、高效、易用的嵌入式开发工具,可以帮助开发者快速开发出高质量的嵌入式系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

主公讲 ARM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值