ar

ar命令可以用来创建、修改库,也可以从库中提取单个模块。库是一单独的文件,里面包含了按照特定的结构组织起来的其他的一些文件(称作此库文件的member)。原始文件的内容、模式、时间戳、组等属性都包含在库文件中。

语法

ar [-]{dmpqrstx}[abcDfilMNoPsSTuvV][a][b]archive-file files

参数

-d:删除库中的文件。
-m[abi]:变更成员文件在备存文件中的次序。
-p:显示库文件中的成员文件内容。
-q:将文件附加在库文件末端。
-r[ab][f][u]:将文件插入库文件中。
-s:若库文件包含了对象模式,可利用此参数简建立库文件的符号表。
-t:显示库文件中所包含的文件。
-x:从库文件中提取出成员文件。

选项参数

a<成员文件>:将文件插入到库文件中指定的<成员文件>之后(after)。
b<成员文件>:将文件插入到库文件中指定的<成员文件>之前(before)。
c:创建库文件(无论库文件是否已经存在)。
D:用0来填充时间戳和uid、gid。
U:用实际的时间戳、uid、gid(默认参数)。
N:与count参数一起使用,在库中有多个相同的文件名时指定提取或输出的个数。
f:为避免过长的文件名不兼容于其他系统的ar指令指令,因此可利用此参数,截掉要放入备存文件中过长的成员文件名称。
i<成员文件>:将文件插入到库文件中指定的<成员文件>之前。
o:保留库文件中文件的日期。
P:进行文件名匹配时使用全路径名。
u:只将日期比库文件中的同名成员文件新的文件插入库文件中。
v:程序执行时显示详细的信息。
V:显示版本信息。
S:不产生符号表。

{dmpqrstx}部分称为操作选项,选项前可以有‘-’字符,也可以没有;[abcDfilMNoPsSTuvV]部分称为任选项。

操作项在命令中只能并且必须使用其中一个,含义如下
m:该操作在一个库中移动成员。当库中有若干模块相同的符号定义(如函数定义),则成员的位置顺序很重要。如果没有指定选项,任何指定的成员将移动到库的最后。也可以使用‘a’,‘b’,‘i’任何选项移动到指定的位置。
q:快速追加。增加新模块到库的结尾处。这时,符号表没有更新,可以用 ‘ar s’或ranlib来更新库的符号表索引。
x:从库中提取一个成员。如果不指定要提取的模块,则提取库中所有的模块。

可与操作项结合使用的任选项:
N:与count参数一起使用,在库中有多个相同的文件名时指定提取或输出的个数。
s:写入一个目标文件索引到库中,或者更新一个存在的目标文件索引。对一个库做ar s等同于对该库做ranlib。
S:不创建目标文件索引,这在创建较大的库时能加快时间。

使用

1.创建库文件

ar -r libt.a a.h b.h

2.查看库文件

ar -t libt.a
a.h
b.h

3.加入新成员

ar -ri a.h libt.a c.h
ar -t libt.a
c.h
a.h
b.h

4.删除库中的成员

ar -d libt.a c.h
ar -t libt.a
a.h
b.h

5.从库中提取成员

ar -x libt.a

6.调整库中成员的顺序

ar -mb a.h libt.a b.h
ar -t libt.a
b.h
a.h

你可能感兴趣的:(ar)