CC ドライバは、各デフォルトライブラリの -llib オプションをリンカーに渡すことによって、libc や libm などのいくつかのライブラリの共有バージョンにデフォルトでリンクします。(デフォルトのライブラリのリストについては、デフォルトの C++ ライブラリを参照してください。)
このようにデフォルトのライブラリを静的にリンクする場合、-library オプションと –staticlib オプションを一緒に使用できます。例:
example% CC test.c -staticlib=Crun
この例では、-library オプションが明示的にコマンドに指定されていません。この場合、標準モード (デフォルトのモード) では、-library のデフォルトの設定が Cstd,Crun であるため、-library オプションを明示的に指定する必要はありません。
あるいは、-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 ドライバは ld に -lthread を渡しません。詳細は、–xnolibを参照してください。ld については、Solaris に関するガイド『リンカーとライブラリ』を参照してください。
CC hello.cc -xnolib -lCrun -lCstd -Bstatic -lc