博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
binutils工具集之---objcopy,ranlib,size,strings,strip
阅读量:5160 次
发布时间:2019-06-13

本文共 1686 字,大约阅读时间需要 5 分钟。

objcopy的作用是拷贝一个目标文件的内容到另一个目标文件中。objcopy使用GNU BFD库去读或写目标文件。objcopy可以使用不同于源目标文件的格式来写目的目标文件(也即是说可以将一种格式的目标文件转换成另一种格式的目标文件)。objcopy在进行目标文件的转换时,将生成一个临时文件,转换完成后就将这个临时文件删掉。objcopy使用BFD做转换工作。如果没有明确地格式要求,则objcopy将访问所有在BFD库中已经描述了的并且它可以识别的格式。

这里只介绍arm开发板中可能会用到的选项:

objcopy can be used to generate a raw binary file by using an output

target of binary (e.g., use -O binary). When objcopy generates a raw
binary file, it will essentially produce a memory dump of the contents
of the input object file. All symbols and relocation information will
be discarded. The memory dump will start at the load address of the
lowest section copied into the output file.

大概意思:

objcopy可以用于通过使用输出来生成一个原始的二进制文件

        二进制对象(例如,使用-O binary)。 当objcopy生成一个原始
        二进制文件时,它本质上会产生一个内存转储的内容
        的输入对象文件。 所有符号和搬迁信息将会
        被丢弃 内存转储将从加载地址最低部分开始
        复制到输出文件中。

-O bfdname

--output-target=bfdname
Write the output file using the object format bfdname.

-S

--strip-all
Do not copy relocation and symbol information from the source file.

这里看一个2440-mmu实验中的Makefile:

我想,此刻,你应该不再陌生了。O(∩_∩)O

ranlib:库索引生成器

ranlib功能相对简单,就是用于在档案文件中生成文件索引,前面讲到的ar的s参数也有这个功能。当档案文件增加索引后,对其文件的存取速度将更加快。如果档案文件是一个静态库,那么生成索引后的库连接速度更快。

eg:

  ranlib   libmy.a

也可以用用nm加上-s参数来查看档案文件中的索引信息,比如:

nm -s libmy.a

size:段大小观察器

size用于查看程序文件中各段的大小。

 

 

 strings:字符串窥视器

strings用于查看程序文件中的可显示字符。

#include
#define VERSION "2.3.7"#define PASSWORD "admin"const char *get_password(){ return PASSWORD;}int main(void){ printf("Version :%s\n",VERSION); printf("Password :%s\n",get_password()); return 0;}

 

strip:程序文件瘦身器

strip用于去除程序文件中的调试信息以便减少程序文件的大小。它的功能与objcopy带--strip-debug参数时的功能是一样的,strip具有的功能,objcopy也都有。

转载于:https://www.cnblogs.com/yangguang-it/p/7061759.html

你可能感兴趣的文章
ubuntu 清理垃圾
查看>>
android 表格布局(类似于html)
查看>>
DDD:Command模式的好处
查看>>
使用base64 对图像进行 转换的小程序。附上对视频进行截图的功能程序。
查看>>
io的常用操作
查看>>
算法入门经典-第七章 例题7-1 除法
查看>>
PCB板查短路点的一种技巧(转帖)
查看>>
Asp.Net 用户验证(自定义IPrincipal和IIdentity)
查看>>
常用的正则表达式
查看>>
华为EC169在MAC 10.9.6下的安装方法
查看>>
easy_install和Pip
查看>>
Mysql ==》 文件夹(库)
查看>>
主攻ASP.NET.3.5.MVC3.0架构之重生:用户角色与用户增删改查(十)
查看>>
简单的Ubuntu16.04 tensorflow, keras环境配置
查看>>
Django RedirectView
查看>>
jenkins配置自动发送邮件,抄送
查看>>
线段树区间修改,区间求和,区间求平方和,最大最小值
查看>>
struts2请求过程源码分析
查看>>
黑马day14 过滤器概述&生命周期&运行过程
查看>>
SVN文件排除
查看>>