Sun Studio 12:C++ 用户指南

12.5 静态链接标准库

CC 驱动程序在缺省情况下链接几个库的共享版本(包括 libclibm),这是通过为每个缺省库将 -llib 选项传递给链接程序来实现的。(有关兼容模式和标准模式下的缺省库列表,请参见12.2.3 缺省 C++ 库。)

如果要静态链接其中任何缺省库,可以使用 -library 选项–staticlib 选项来静态链接 C++ 库。这种替换方法比上文所述的方法简单。例如:


example% CC test.c -staticlib=Crun

在此示例中,没有在命令中显式包括 -library 选项。这种情况下,无需 -library 选项,因为在标准模式(缺省模式)下,-library 的缺省设置是 Cstd,Crun

也可以使用 -xnolib 编译器选项。使用 -xnolib 选项时,驱动程序不会将任何 -l 选项传递给 ld,所以您必须自己传递这些选项。以下示例显示了在 Solaris 8 或 Solaris 9 操作系统中如何静态链接 libCrun 以及如何动态链接 libmlibc


example% CC test.c– xnolib– lCstd– Bstatic– lCrun– Bdynamic– lm– lc

-l 选项的顺序很重要。– lCstd、– lCrun-lm 选项位于 -lc 之前。

有些 CC 选项链接到其他库。也可以使用 -xnolib 抑制这些库链接。例如,使用 -mt 选项会导致 CC 驱动程序将 -lthread 传递给 ld。但如果使用 –mt–xnolibCC 驱动程序不会将 -lthread 传递给 ld。有关更多信息,请参见A.2.146 –xnolib。有关 ld 的更多信息,请参见《链接程序和库指南》。