请阅读【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
在这个例子中,objcopy将myprog.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格式和调试信息的处理。在日常开发中,可能会同时用到这两个工具集。文章来源:https://www.toymoban.com/news/detail-648392.html
上篇文章:【ARM 嵌入式 编译系列 10.2 – 符号表与可执行程序分离详细讲解】
下篇文章:【ARM 嵌入式 编译系列 11 – GCC attribute((packed))详细介绍】文章来源地址https://www.toymoban.com/news/detail-648392.html
到了这里,关于【ARM 嵌入式 编译系列 10.3 -- GNU elfutils 工具小结】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!