gnu binutils 工具解析

内容转自:

www.cublog.cn/u/13991/showart.php

 

GNU binutils是一组二进制工具集。包括:addr2line   ar   gprof   nm   objcopy   objdump   ranlib   size   strings   strip. 本文归纳他们的常用法。

ar


ar用于建立、修改、提取档案文件(archive)。archive是一个包含多个被包含文件的单一文件(也称之为库文件),其结构保证了可以从中检索 并得到原始的被包含文件(称之为archive中的member)。member的原始文件内容、模式(权限)、时间戳、所有着和组等属性都被保存在 archive中。member被提取后,他们的属性被恢复到初始状态。

ar主要用于创建C库文件(关于.o目标文件的生成和共享库的详细介绍,参考gcc笔记)


创建静态库 

    (1) 生成目标文件:  

 

$ gcc -Wall -c file1.c file2.c file3.c

   不用指定生成.o文件名(默认生成file1.o, file2.o, file3.o)。

 

    (2) 从.o目标文件创建静态连接库:

  

$ ar rv libNAME.a file1.o file2.o file3.o

   ar生成了libNAME.a库,并列出库中的文件。

 

   

r :

将flie1.o, file2,o, file3.o插入archive,如故原先archive中已经存在某文件,则先将该文件删除

v :

显示ar操作的附加信息(如被处理的member文件名)

 

注: 对于BSD系统, 还需要在创建静态库之后创建索引: $

ranlib libNAME.a

Linux中不需要这一步(运行它也是无害的).