Sun Studio 12: C++ ユーザーズガイド

A.2.55 -mt

マルチスレッド化したコードのコンパイルとリンクを行います。

このオプションを付けると、-D_REENTRANT がプリプロセッサに渡され、-lthreadld に正しい順番で渡されます。

アプリケーションやライブラリがマルチスレッド化されている場合は、-mt オプションが必要です。

libthread とリンクする場合には、-lthread ではなく -mt オプションを使用してライブラリのリンク順序が正しくなるようにしてください。

POSIX スレッドを使用する場合は、-mt -lpthread オプションを使ってリンクする必要があります。-mt オプションが必要な理由は、libC (互換モード) と libCrun (標準モード) がマルチスレッド対応のアプリケーションに対して libthread を必要とするためです。

コンパイルとリンクを別々に実行する場合で、コンパイルで -mt を使用した場合は、予期しない結果が発生することがあります。1 つの翻訳単位を -mt を使用してコンパイルする場合は、プログラムのすべての単位を -mt を使用してコンパイルしてください。

並列の Fortran オブジェクトを C++ オブジェクトと混合している場合は、リンク行に -mt オプションを指定する必要があります。

A.2.55.1 警告

libthread とリンクする場合には、-lthread ではなく -mt オプションを使用してライブラリのリンク順序が正しくなるようにしてください。

POSIX スレッドを使用する場合は、-mt オプションと -lpthread オプションを使ってリンクする必要があります。-mt オプションが必要な理由は、libCrun (標準モード) と libC (互換モード) がマルチスレッド対応のアプリケーションに対して libthread を必要とするためです。

コンパイルとリンクを別々に実行する場合で、コンパイルで -mt を使用した場合は、次の例に示すようにリンクでも -mt を使用してください。 そうしないと、予期しない結果が発生する可能性があります。


example% CC -c -mt myprog.cc
example% CC -mt myprog.o

並列の Fortran オブジェクトを C++ オブジェクトと混合している場合は、リンク行に -mt オプションを指定する必要があります。

C99 サポートは互換モード (-compat=4) で使用できません。

関連項目

-xnolib「10.5 メンバー変数のキャッシュ」、『マルチスレッドのプログラミング』、『リンカーとライブラリ