我有一些生成的目标文件,我使用它来创建一个静态库:
ar -r libmine.a *.o
之后我通过以下方式添加索引:
ar -s libmine.a
如何将第一个命令与第二个命令进行比较以及哪些附加函数为我提供了该索引?
使用此命令后:
ar -r libmine.a *.o
我用过这个:
nm -s libmine.a
我得到:
Archive index:
add in add.o
mul in mul.o
sub in sub.o
add.o:
0000000000000000 T add
mul.o:
0000000000000000 T mul
sub.o:
0000000000000000 T sub
我执行下一步ar -s libmine.a
并在nm -s libmine.a
后获得相同的输出。为什么? ar -r
由ar -s
组成?
答案 0 :(得分:1)
带有索引的存档可加快链接到库的速度,并允许库中的例程相互调用,而不考虑它们在存档中的位置。
您可以使用nm -s
或nm --print-armap
列出索引表。
哦,创建库的命令是ar -r <lib.a> <objects>
。您混淆了对象和库名称。
详细说明您的继续&#34;:是的,只要ar
对存档进行更改,ar
就会自动保留并更新索引表。 ar
的大多数现代实现甚至在首次创建归档时自动创建这样的索引,而无需调用ar -s
。