本文共 682 字,大约阅读时间需要 2 分钟。
binutils是一组二进制工具集,它包括addr2line、ar、gprof、nm、objcopy、objdumpr、ranlib、size、strings、strip等。
ar用于建立、修改、提取库文件。ar至少需要两个参数才能运行,比如:
$ ar rv libtest.a add.o minus.o 是指将add.o、minus.o做成库文件libtest.a。其中r是指将文件列表插入归档文件,v是指得到操作版本号。 这样我们引用库文件的时候就可以使用: $ gcc -o test test.c -ltestnm软件的作用是现实目标文件的信息和属性,比如:
$ nm test.o U Add 00000000 T main U Minus U printf 这里U标志符号未被定义,T表示符号位于代码段,D表示符号位于已初始化数据部分,还有B、t、r、b、R、A、W、d等等。objcopy软件用来将某种格式的目标软件转换成另一种格式的目标软件。
比如u-boot使用本软件将u-boot转换成u-boot.srec格式。本软件可以用来进行反汇编和查看目标文件信息。
ld软件用来吧各种目标文件和库文件链接在一起,定位数据和函数的地址,最终生成可执行文件。
链接描述文件用于显式的控制ld的链接过程。ld的“-T”选项可以指定链接描述文件的名称。
链接描述文件遵循特定的链接命令语言——linker scripts的语法。比如u-boot.lds转载地址:http://nhfvb.baihongyu.com/