CC 驱动程序缺省链接在多个库(包括 libc 和 libm)的共享版本中,这是通过为每个缺省库将 -llib 选项传递给链接程序来实现的。.(有关缺省库的列表,请参见缺省 C++ 库。)
如果要静态链接其中任何缺省库,可以使用 -library 选项和 –staticlib 选项。例如:
example% CC test.c -staticlib=Crun
在此示例中,没有在命令中显式包括 -library 选项。这种情况下,无需 -library 选项,因为在标准 -compat=5 模式下,-library 的缺省设置是 Cstd,Crun。
也可以使用 -xnolib 编译器选项。 使用 -xnolib 选项时,驱动程序不会将任何 -l 选项传递给 ld,所以您必须自己传递这些选项。以下示例显示了如何静态链接 libCrun 以及如何动态链接 libm 和 libc:
example% CC test.c -xnolib -lCstd -Bstatic -lCrun -Bdynamic -lm -lc
-l 选项的顺序很重要。– lCstd、– lCrun 和 -lm 选项位于 -lc 之前。
有些 CC 选项链接到其他库。也可以使用 -xnolib 抑制这些库链接。例如,使用 -mt 选项会导致 CC 驱动程序将 -lthread 传递给 ld。 但如果同时使用 –mt 和 –xnolib,CC 驱动程序不会将 -lthread 传递给 ld。有关更多信息,请参见–xnolib。有关 ld 的更多信息,请参见Oracle Solaris 11.3 链接程序和库指南。
CC hello.cc -xnolib -lCrun -lCstd -Bstatic -lc