binutils工具集,软件开发利器

在binutils工具集中,以下工具是我们在做嵌入式软件开发时需要掌握的:

as是汇编编译器,用于将汇编代码转换为目标文件。

add2line用户得到程序指令地址所对应的函数,以及函数所在的源文件名和函号;

ar用于创建和修改档案文件,以及从档案文件中抽取文件。静态库(.a文件)就是一种档案文件,需要用它生成和管理;

ld:链接器;

nm:用于列出程序文件中的符号及符号在内存中的(开始)地址;符号包含C程序中的函数名和变量名;

objcopy:用于用来从程序文件中拷贝出我们所指定的段。代码格式转换。

objdump:能显示程序文件的相关信息和对程序文件进行反汇编;

ranlib:用于生成一个档案文件的内容索引,以加快对档案文件的查找速度。将该工具运用于静态库能提高库参与链接的效率。

size:用于了解程序文件中各段的大小。

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

strip:用于剥去程序文件的调试信息,以减少文件所占用的存储空间。

以下是他们具体的用法:

1、addr2line [地址]  -f -e [应用程序名]

2、ar:静态库生成器

ar的参数:

c:表示创建一个档案文件;

r:指示将文件增加到所创建的库文件中;

s:为了生成库索引以提高库被链接时的效率。

3、nm符号显示器

总体来说,nm用于列出程序文件中的符号。nm所列出的每一行由三个部分组成。

第一列:是指程序运行时符号在内存中的地址。它表示函数或变量的开始地址;

第二列:是指相应的符号存放在哪一个段;

第三列:是符号的名称;

针对第二列:

A:表示符号所对应的值时绝对的且在以后的连接过程中也不会改变;

B或b:表示符号位于未初始化的数据段中;

C:表示没有被初始化的公共符号;

D或者d:表示符号位于初始化的数据段(.data段)中。

N:表示符号是没有调试用的。

p:表示符号位于一个栈回溯段中。

R或者r:表示符号位于只读数据段(.rdata段)中 。

T 或者t:表示符号位于代码段(.text段)中。

U:表示符号没有被定义。

4、objdump -h hello

5、objcopy

6、ranlib库索引生成器: nm -s libmy.a

7、size

8、strings 字符串窥视器 : strings hello

9、strip 程序文件瘦身器。

参考文献:专业嵌入式软件开发  李云。

时间: 2024-08-03 14:29:12

binutils工具集,软件开发利器的相关文章

Makefile 学习&binutils工具集,软件开发利器

gcc -E 能有效的帮助我们解决与宏有关的编译错误: gcc -S能获得一个C源程序文件的汇编程序: gcc -v能获得系统头文件的路径 生成依赖关系: gcc -M gcc -MM 生成不包含系统头文件的依赖关系 指定链接库: gcc -L:告诉gcc可以从哪个目录查找库文件: gcc -l :用于告诉gcc在生成可执行程序时需要链接的库名: 一.静态库生成步骤如下:步骤一:生成 str_out.o 目标文件gcc -c str_out.c注:不加 -o 则生成同名的 *.o 目标文件(st

binutils工具集之---addr2line

addr2line用于得到程序指令地址所对应的函数,以及函数所在的源文件名和行号. 在不少嵌入式开发环境中,编译器的名称往往不是gcc,而是想arm-rtems-gcc这样的,对于这种命名形式的编译器,读者通常可以找到arm-rtems-addr2line ,arm-rtems-objdump等相应名称的工具,这是GNU工具集的一种命名惯例. 本文并不是binutils工具集的完整参考手册,当需要得到更为详细的帮助信息时,可以参照对应工具的man和info信息.另一个更为简单的方法时运行相应的工

全新的跨平台app软件开发工具——Lae软件开发平台

Lae是一款运行于windows的界面开发工具,具有所见即所得.开发跨平台.UI布局自由.机制简单.维护容易等诸多优点,可以开发同时运行在windows.Linux.MacOX.iOS.Android等系统平台的软件,windows桌面工具软件.管理软件.游戏界面;  linux系统桌面工具软件.管理软件.游戏界面; Mac OSX系统上桌面工具软件.管理软件.游戏界面:安卓系统的APP软件.2D游戏:iOS系统上的APP软件.2D游戏. 感兴趣的朋友请搜索知乎上的Lae软件开发平台介绍,或加入

binutils工具集之---objdump

在嵌入式软件开发中,有时需要知道所生成的程序文件中的段信息以分析问题,或者需要查看c语言对应的汇编代码,此时,objdump工具就可以帮大忙了.obj--object  dump:转储. #include<stdio.h> #include<time.h> int global1; int global2=3; static int static_global1; static int static_global2=3; void foo() { static int intern

binutils工具集之---objcopy,ranlib,size

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

binutils工具集之---ar

1.如果要将多个.o文件生成一个库文件,则存在两种类型的库,在linux里面后缀是.a,另一种是动态库,后缀为.so. 当可执行程序要与静态库进行链接时,所用到的库中的函数和数据会被拷贝到最终的可执行程序中.而采用动态库则不会,程序加载器在后台为我们讲所需的动态库自动加载到内存中且保证整个系统只有一份拷贝. 如果一个系统中存在多个需要同时运行的程序且这些程序之间存在共享库,那么采用动态库的形式将更节省内存.但是对于嵌入式系统,大多数情况下都是整个软件就是一个可执行程序且不支持动态加载的方式,即以

安卓快速开发工具集

安卓快速开发工具集 快速开发,能简便开发过程,节省时间. 下载地址:http://www.devstore.cn/code/info/805.html 包含文件:

软件开发工具(第5章:软件开发工具的使用与开发)

一.购置与开发的权衡 购买或自行开发软件与哪些条件有关? 购买现成的软件开发工具还是自己开发专用的工具,与具体工作的条件. 环境.人员素质.项目特征都有不可分割的联系 自行开发软件开发工具的优点(重点.记忆) 目标明确,切实符合自己的需要. 便于进一步扩充和升级,不存在引进外面产品时不可避免的冲突 与不一致. 可以商品化,成为软件产品出售. 许多软件技术人员手边都积累了一些自制的.专用的.规模不一的软件开发工具 购买软件开发工具的优点(重点.记忆) 能够帮助人们减轻一定的工作负担,在某些环节上代

Windows系统结合MinGW搭建软件开发环境

MinGW介绍 MinGW,即Minimalist GNU For Windows,它包含了GNU工具集的运行环境.GCC编译器工具集以及其它的GNU程序开发工具(如make.gawk.grep等等).借用MinGW,可以在Windows操作系统上,使用强大的.丰富多彩的开源工具进行软件开发,例如vim.gcc.python等等. 该工具的官方首页为:http://www.mingw.org/ MinGW安装 标准的MinGW安装过程需要连接网络在线安装,需要先去网站的下载页面,下载最新的安装文