以下内容转自【 http://codingstandards.iteye.com/blog/1142358 】,有删改。
CONTENTS
用途说明
创建静态库.a文件。用C/C++开发程序时经常用到,但我很少单独在命令行中使用ar命令,一般写在makefile中,有时也会在shell脚本中用到。
常用参数
ar rcs libxxx.a xx1.o xx2.o
参数r:在库中插入模块(替换)。当插入的模块名已经在库中存在,则替换同名的模块。如果若干模块中有一个模块在库中不存在,ar显示一个错误消息,并不替换其他同名模块。默认的情况下,新的成员增加在库的结尾处,可以使用其他任选项来改变增加的位置。【1】
参数c:创建一个库。不管库是否存在,都将创建。
参数s:创建目标文件索引,这在创建较大的库时能加快时间。(补充:如果不需要创建索引,可改成大写S参数;如果.a文件缺少索引,可以使用ranlib命令添加)
ar t libxxx.a
显示库文件中有哪些目标文件,只显示名称。
ar tv libxxx.a
显示库文件中有哪些目标文件,显示文件名、时间、大小等详细信息。
nm -s libxxx.a
显示库文件中的索引表。
ranlib libxxx.a
为库文件创建索引表。
ar命令介绍:
cstriker1407@cstriker1407-x64:~$ ar Usage: ar [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <name>] [member-name] [count] archive-file file... ar -M [<mri-脚本] 命令: d - 从归档文件中删除文件 m[ab] - 在归档文件中移动文件 p - 打印在归档文件中找到的文件 q[f] - 将文件快速追加到归档文件中 r[ab][f][u] - 替换归档文件中已有的文件或加入新文件 s - act as ranlib t - 显示归档文件的内容 x[o] - 从归档文件中分解文件 特定命令修饰符: [a] - 将文件置于 [成员名] 之后 [b] - 将文件置于 [成员名] 之前 (于 [i] 相同) [D] - use zero for timestamps and uids/gids [U] - use actual timestamps and uids/gids (default) [N] - 使用文件名编号 [f] - 截短插入的文件名 [P] - 在匹配时使用完整的路径名 [o] - 保留原来的日期 [u] - 只替换比当前归档内容更新的文件 通用修饰符: [c] - 不在必须创建库的时候给出警告 [s] - 创建归档索引 (cf. ranlib) [S] - 不要创建符号表 [T] - make a thin archive [v] - 输出较多信息 [V] - 显示版本号 @<file> - 从 <file> 中读取选项 --target=BFDNAME - specify the target object format as BFDNAME optional: --plugin <p> - load the specified plugin 仿真选项: 没有仿真特有的选项 ar:支持的目标: elf64-x86-64 elf32-i386 elf32-x86-64 a.out-i386-linux pei-i386 pei-x86-64 elf64-l1om elf64-k1om elf64-little elf64-big elf32-little elf32-big pe-x86-64 pe-bigobj-x86-64 pe-i386 plugin srec symbolsrec verilog tekhex binary ihex
发表评论