3.19 binutils工具集

    科技2026-02-07  4

    3.19 binutils工具集

    GNU编译器

    GCC编译器 GNU工具集:binutils tools

    GNU工具集

    协助软件的编译、链接 不同文件格式的转换 针对特定处理器的一些处理

    常用binutils工具

    工具名用途as汇编器,将汇编文件汇编为目标文件ld链接器,将几个目标文件和库组合成一个文件nm列出目标文件中的符号size列出目标文件的各个段的大小和总大小,如代码段、数据段等strip移除目标文件中的符号,进行文件压缩、给文件“减肥”gprof显示分析数据的调用图表ar创建、修改和提取归档目标文件(静态库)addr2line将程序地址翻译成文件名和行号objcopy将一种目标文件翻译成另一种:.bin.elfobjdump显示目标文件的信息、反汇编readelf显示有关ELF文件的信息ranlib创建一个归档的内容,并存储在归档内,索引列出其成员中可重定位的目标文件定义的所有符号strings给每个给定的文件输出不短于指定长度的所有可打印字符序列,对于目标文件,默认只打印初始化和加载部分的字符串libopcodes一个库,用于处理opcodes处理器指令的可读文本版本

    readelf命令

    参数说明-a读取所有符号表的内容-h读取ELF文件头-l显示程序头表(可执行文件,目标文件无该表)-S读取节头表(section headers)-s显示符号表-e显示目标文件所有的头信息-n显示node段的信息-r显示relocate段的信息-d显示dynamic section信息-g显示section group的信息

    objdump用法

    参数说明-x输出目标文件的所有header信息-t输出目标文件的符号表-h输出目标文件的节头表信息-jsection 仅反汇编指定的section-S将代码段反汇编同时,将反汇编代码和源码交替显示-D对二进制文件进行反汇编,反汇编所有的section-d反汇编代码段-f显示文件头信息-s显示目标文件的全部header信息,以及它们对应的16进制文件代码

    objcopy用法

    主要用途:拷贝一个目标文件的内容到另一个目标文件中、目标文件 格式转换

    参数说明-R name从文件中删除所有名为.name的段-S不从源文件拷贝重定位和符号信息到输出目标文件-g不从源文件拷贝调试符号到输出目标文件-j section只拷贝指定的section到输出文件-K symbol从源文件拷贝名为symbol的符号,其它不拷贝-N symbol不从源文件拷贝名为symbol的符号-L symbol将符号symbol文件内部局部化,外部外部不可见-W symbol将符号symbol转为为弱符号

    ELF文件转换为BIN文件

    arm-linux-gnueabi-objcopy –O binary -R .comment -S uboot uboot.bin

    -O binary:输出为原始的二进制文件 -R .comment:删除不需要的section -S:重定位、符号等信息不要输出到目标文件uboot.bin中 uboot : 待转化的elf文件

    BIN文件转换为HEX文件

    objcopy -I binary -O ihex uboot.bin uboot.hex

    文件“瘦身”

    将目标文件中不需要的信息去掉

    Processed: 0.013, SQL: 9