3.19 binutils工具集

3.19 binutils工具集

GNU编译器

GCC编译器
GNU工具集:binutils tools

GNU工具集

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

常用binutils工具

工具名用途
as汇编器,将汇编文件汇编为目标文件
ld链接器,将几个目标文件和库组合成一个文件
nm列出目标文件中的符号
size列出目标文件的各个段的大小和总大小,如代码段、数据段等
strip移除目标文件中的符号,进行文件压缩、给文件“减肥”
gprof显示分析数据的调用图表
ar创建、修改和提取归档目标文件(静态库)
addr2line将程序地址翻译成文件名和行号
objcopy将一种目标文件翻译成另一种:.bin.elf
objdump显示目标文件的信息、反汇编
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

文件“瘦身”

objcopy -R .comment a.out
 # 将目标文件中不需要的信息去掉
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值