青海城乡与建设厅网站,遂宁商城网站建设报价,创建简单的微信小程序,工作室做什么项目好文章目录 什么是 GNU elfutils#xff1f;GNU elfutils 常用工具有哪些#xff1f;objcopy 常用参数有哪些#xff1f;GNU binutils和GNU elfutils区别是什么#xff1f; 上篇文章#xff1a;ARM 嵌入式 编译系列 10.2 – 符号表与可执行程序分离详细讲解 什么是 GNU elfu… 文章目录 什么是 GNU elfutilsGNU elfutils 常用工具有哪些objcopy 常用参数有哪些GNU binutils和GNU elfutils区别是什么 上篇文章ARM 嵌入式 编译系列 10.2 – 符号表与可执行程序分离详细讲解 什么是 GNU elfutils
GNU elfutils是一个开源的工具集用于处理ELFExecutable 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-debuglinkmyprog.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这是一个库和工具集重点放在处理ELFExecutable and Linkable Format格式的二进制文件和DWARF一种调试信息格式。其中包含了如libelf操作ELF格式的库、readelf显示ELF文件信息、eu-strip剥离符号和调试信息但比binutils的strip更强大等工具。elfutils主要用于更复杂、更深入的二进制文件分析和调试任务比如处理调试信息。 总的来说GNU binutils更关注通用的二进制文件操作而 GNU elfutils则更关注ELF格式和调试信息的处理。在日常开发中可能会同时用到这两个工具集。 上篇文章ARM 嵌入式 编译系列 10.2 – 符号表与可执行程序分离详细讲解