【发布时间】:2012-03-28 23:32:32
【问题描述】:
在编译过程中,Linux内核创建liba.a,其中包含许多来自不同目录的built-in.o和其他目标文件,并将其作为最终vmlinux链接的主要组成部分。我在glibc 编译中看到了类似的归档文件使用,现在我想知道为什么这些项目使用归档文件以及这样做有什么好处。
据我所知,使用ar 生成的存档文件只是其中包含的各个文件的容器。除了减少每个目标文件的文件搜索时间之外,我没有看到使用它的太多好处。这是在编译过程中使用存档文件的原因吗?
如果是这样,我会惊讶于文件名搜索对内核人们关心的意义重大,我想知道不使用存档文件的成本是多少,以及如果没有空间的类似问题是否有任何替代方案.a 文件效率低下。
【问题讨论】:
-
在编译命令中引用一两个库比引用 500 个目标文件更容易。
-
您可以逐步添加到 .a 中。
-
@Duck 是的,它更容易参考,但这不是原因,我相信。内核人员通常对时间/空间资源的使用非常敏感,归档文件的这种可用性优势不能超过归档的时间开销和归档文件和目标文件的两倍空间开销。
标签: linux compilation kernel archive glibc