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 程序文件瘦身器。

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

每天告诉自己一次,『我真的很不错』

binutils工具集,软件开发利器

相关文章:

你感兴趣的文章:

标签云: