链接程序和库指南

归档处理

使用 ar(1) 生成归档。归档通常由一组可重定位目标文件和归档符号表组成。该符号表提供符号定义与提供这些定义的目标文件之间的关联关系。缺省情况下,链接编辑器有选择地提取归档成员。链接编辑器使用未解析的符号引用从归档中选择所需的目标文件以完成绑定过程。也可以显式提取归档的所有成员。

在以下情况下,链接编辑器从归档中提取可重定位目标文件:

有选择地提取归档时,除非 -z weakextract 选项有效,否则弱符号引用不会从归档中提取目标文件。 有关更多信息,请参见简单解析


注 –

使用选项 -z weakextract-z allextract-z defaultextract,可以在多个归档之间切换归档提取机制。


在有选择地提取归档的情况下,链接编辑器会检查整个归档多遍。将根据需要提取可重定位目标文件,以满足链接编辑器内部符号表中累积的符号信息。链接编辑器检查完归档一遍但未提取任何可重定位目标文件之后,将处理下个输入文件。

由于遇到归档时仅从归档中提取需要的可重定位目标文件,因此命令行中归档的位置可能很重要。 请参见命令行中归档的位置


注 –

虽然链接编辑器检查整个归档多遍以解析符号,但此机制的开销很大。对于包含随机组织的可重定位目标文件的大型归档,更是如此。在这些情况下,应使用诸如 lorder(1)tsort(1) 的工具对归档中的可重定位目标文件排序。该排序操作可减少链接编辑器必须检查归档的遍数。