【发布时间】:2016-10-03 12:43:31
【问题描述】:
ranlib 的手册页说:
描述 ranlib 生成档案内容的索引并将其存储在档案中。该索引列出了由可重定位目标文件的存档成员定义的每个符号。
好吧,我尝试编译如下存档文件:
$ cat o.c
#include<stdio.h>
int f(){
printf("hello\n");
return 2;
}
gcc -o o.o -c o.c
ar rc libmyobject.a o.o
cp libmyobject.a libmyobject.a.keep
ranlib libmyobject.a
我尝试比较ranlib之前和之后的库文件大小,我得到:
-rw-rw-r-- 1 a a 1626 Oct 3 12:03 libmyobject.a.keep
-rw-rw-r-- 1 a a 1626 Oct 3 12:06 libmyobject.a
它们的大小相同。这出乎我的意料。我希望 runlib 将一些额外的信息存储到 .a 文件中。但实际上,文件大小还是一样的。
那么,ranlib 到底做了什么工作,我如何检查 ranlib 做了什么工作呢? 谢谢。
【问题讨论】:
-
您为什么希望在这种情况下有所改变?在这两种情况下,索引都是相同的——命令的确定性输出是可取的(我相信你遇到了 binutils 的
--enable-deterministic-archives配置选项)
标签: linux gcc indexing archive