通常 (このオプションを指定しない場合)、C++ コンパイラは、C++ プログラムをサポートするためにいくつかのシステムライブラリとリンクします。このオプションを指定すると、デフォルトのシステムサポートライブラリとリンクするための -llib オプションが ld に渡されません。
通常、コンパイラは、システムサポートライブラリにこの順序でリンクします。
標準モード (デフォルトモード)
-lCstd -lCrun -lm -lc |
互換モード (-compat)
-lC -lm -lc |
-l オプションの順序は重要です。-lm オプションは -lc の前にある必要があります。
-mt コンパイラオプションを指定した場合、コンパイラは通常 -lm でリンクする直前に -lthread でリンクします。
デフォルトでどのシステムサポートライブラリがリンクされるかを知りたい場合は、コンパイルで-dryrun オプションを指定します。たとえば、次のコマンドを実行するとします 。
example% CC foo.cc -xarch=v9 -dryrun |
前述の出力には次の行が含まれます。
-lCstd -lCrun -lm -lc |
C アプリケーションのバイナリインタフェースを満たす最小限のコンパイルを行う場合、つまり、C サポートだけが必要な C++ プログラムの場合は、次のように指定します。
example% CC -xnolib test.cc -lc |
一般的なアーキテクチャー命令を持つシングルスレッドアプリケーションに libm を静的にリンクするには、次のように指定します。
標準モードの場合
example% CC -xnolib test.cc -lCstd -lCrun -Bstatic -lm -Bdynamic -lc |
互換モードの場合
example% CC -compat -xnolib test.cc -lC -Bstatic -lm -Bdynamic -lc |
-xarch=v9、-xarch=v9a、-xarch=v9b のいずれかでリンクする場合には、使用できない静的システムライブラリがあります (libm.a や libc.a など)。
-xnolib を指定する場合は、必要なすべてのシステムサポートライブラリを手動で一定の順序にリンクする必要があります。システムサポートライブラリは最後にリンクしなければいけません。
-xnolib を指定すると、-library は無視されます。
C++ 言語の多くの機能では、libC (互換モード) または libCrun (標準モード) を使用する必要があります。
このリリースのシステムサポートライブラリは安定していないため、リリースごとに変更される可能性があります。
-library、-staticlib、-l