Sun Studio 12 Update 1:C++ 用户指南

16.2 生成静态(归档)库

生成静态(归档)库的机制与生成可执行文件相似。可以使用 CC– xar 选项将目标 (.o) 文件集合并入单个库中。

可以使用 CC -xar 而非直接使用 ar 命令来生成静态(归档)库。C++ 语言通常要求编译器维护的信息比传统 .o 文件提供的信息多,尤其是模板实例。– xar 选项可确保所有必要信息(包括模板实例)都包括在库中。在通常的编程环境下,可能无法完成该操作,因为 make 无法确定实际创建和引用了哪些模板文件。如果没有 CC -xar,引用的模板实例可能没有按照需要包括在库中。例如:


% CC -c foo.cc # Compile main file, templates objects are created.
% CC -xar -o foo.a foo.o # Gather all objects into a library.

–xar 标志会使 CC 创建静态(归档)库。要为新建的库命名,需要使用 – o 指令。编译器检查命令行上的目标文件,交叉引用这些目标文件与模板系统信息库中的目标文件,并将用户的目标文件所需的模板(以及主目标文件本身)添加到归档文件中。


注 –

仅可将 -xar 标志用于创建或更新现有归档文件。不要用它来维护归档。-xar 选项与 ar -cr 等效。


最好每个 .o 文件中只有一个函数。如果要链接归档文件,则在需要该归档文件中的特定 .o 文件中的符号时,整个 .o 文件都链接到应用程序中。每个 .o 文件中有一个函数可以确保将只从归档文件链接应用程序所需的那些符号。