跳过导航链接 | |
退出打印视图 | |
Oracle Solaris Studio 12.3:C++ 用户指南 Oracle Solaris Studio 12.3 Information Library (简体中文) |
生成静态(归档)库的机制与生成可执行文件相似。可以使用 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 文件中只放置一个函数时,将只会从归档文件中链接应用程序所需的那些符号。