Oracle Solaris Studio 12.2:C++ 用户指南

A.2.89.1 值

l 必须是下列值之一。

表 A–19 -staticlib

值 

含义  

[no%]library

[不] 静态链接 librarylibrary 的有效值包括了 -library 的全部有效值(除 %all%none 之外)、-xlang 的全部有效值以及 interval(要与 -xia 结合使用)。

%all

静态链接 -library 选项中指定的所有库、-xlang 选项中指定的所有库以及(如果在命令行上指定了 -xia)区间库。

%none

不静态链接在 -library 选项和 -xlang 选项中指定的库。如果在命令行上指定了 -xia,则不静态链接区间库。

缺省值

如果没有指定 –staticlib,则假定 –staticlib=%none

示例

以下命令行静态链接 libCrun,因为 Crun–library 的缺省值:


example% CC –staticlib=Crun (correct)

但以下命令行并不链接 libgc,因为只有使用 -library 选项显式指定才链接 libgc


example% CC –staticlib=gc (incorrect)

要静态链接 libgc,请使用以下命令:


example% CC -library=gc -staticlib=gc (correct)

以下命令会动态链接 librwtool 库。因为 librwtool 不是缺省库且未使用 -library 选项选择它,因此 -staticlib 不起作用:


example% CC -lrwtool -library=iostream \
-staticlib=rwtools7 (incorrect)

该命令静态链接 librwtool 库:


example% CC -library=rwtools7,iostream -staticlib=rwtools7 (correct)

该命令将动态链接 Sun 性能库,因为 -library=sunperf 必须与 -staticlib=sunperf 结合使用,-staticlib 选项才能对这些库的链接有效:


example% CC -xlic_lib=sunperf -staticlib=sunperf (incorrect)
 This command links the Sun Performance Libraries statically:

example% CC -library=sunperf -staticlib=sunperf (correct)

交互

该选项会累积而不覆盖。

除缺省情况下隐式选择的 C++ 库之外,-staticlib 选项仅对使用 -xia 选项、-xlang 选项和 -library 选项显式选择的 C++ 库有效。在兼容模式 (-compat=[4]) 下,缺省选择 libC。在标准模式(缺省模式)下,缺省选择 CstdCrun

使用 -xarch=v9-xarch=v9a-xarch=v9b (或等价的 64 位体系结构选项)时,某些 C++ 库不能用作静态库。

警告

library 的允许值集合不确定,会随发行版的不同而异。

使用 -xarch=v9-xarch=v9a-xarch=v9b(或等价的 64 位体系结构选项)时,某些库不能用作静态库。

选项 -staticlib=Crun-staticlib=Cstd 不能用于 64 位 Solaris x86 平台。Sun 建议不要在任何平台上静态链接这些库。在某些情况下,静态链接可能会使程序无法正常运行。

另请参见

-library11.5 静态链接标准库