Oracle® Developer Studio 12.5:C++ 用户指南

退出打印视图

更新时间: 2016 年 7 月
 
 

14.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 文件中只放置一个函数时,将只会从归档文件中链接应用程序所需的那些符号。