C++ ユーザーズガイド

標準ライブラリの静的リンク

デフォルトでは、CC ドライバは、デフォルトライブラリのそれぞれについて -llib オプションをリンカーに渡すことによって、libclibm などの共有ライブラリをいくつかリンクします (互換性モードと標準モードのデフォルトライブラリについては、「デフォルトの C++ ライブラリ」を参照)。

これらデフォルトライブラリを静的にリンクする場合は、-xnolib コンパイラオプションを使用できます。-xnolib オプションを指定すると、ドライバは自動的には -l オプションを ld に渡しません。-l オプションは、自分で渡す必要があります。次の例は、Solaris 2.5.1、2.6、7 オペレーティング環境で libCrun と静的に、libwlibmlibc と動的にリンクする方法を示します。


demo% CC test.c -xnolib -lCstd -Bstatic -lCrun -Bdynamic -lC_mtstubs -lm -lw -lcx -lc

-l オプションの順序は重要です。-lc の前に -lCstd-lCrun-lm-lw-lcx オプションがあることに注意してください。


注 -

x86 プラットフォームでは、-lcx オプションはありません。


他のライブラリにリンクする CC オプションもあります。そうしたライブラリへのリンクも -xnolib によって行われないように設定できます。たとえば、-mt オプションを指定すると、CC ドライバは -lC_mtstubs ではなく、-lthreadld に渡します。これに対し、-mt-xnolib の両方を使用すると、CC ドライバは ld-lthread を渡しません。詳細は、-xnolibを参照してください。ld については、Solaris に関するマニュアル『リンカーとライブラリ』を参照してください。

-library オプションと -staticlib オプションを組み合わせることによって、C++ ライブラリを静的にリンクすることもできます。この方法は、前述の方法よりはるかに簡単です。たとえば、上記の例は次のようにして実行できます。


demo% CC test.c -staticlib=Crun