Sun Studio 12:C++ 用户指南

A.2.55 –mt

编译和链接多线程代码。

该选项将 -D_REENTRANT 传递给预处理程序,并将 -lthread 以正确的顺序传递给 ld

如果应用程序或库是多线程的,则必须使用 -mt 选项。

为了确保正确的库链接顺序,必须使用该选项而不是 -lthread 来与 libthread 链接。

如果使用的是 POSIX 线程,则必须使用 -mt -lpthread 选项来链接。由于对于多线程应用程序,libC(兼容模式)和 libCrun(标准模式)需要 libthread,因此必须使用 -mt 选项。

如果在不同的步骤进行编译和链接并且使用 -mt 编译,则可能会得到意外的结果。如果使用 - mt 编译一个转换单元,则应使用 -mt 编译该程序的所有单元。

如果要混合使用并行 Fortran 对象与 C++ 对象,必须在链接行中指定 -mt 选项。

A.2.55.1 警告

为了确保正确的库链接顺序,必须使用该选项而不是 -lthread 来与 libthread 链接。

如果要使用 POSIX 线程,就必须使用 -mt- lpthread 选项进行链接。由于对于多线程应用程序,libCrun(标准模式)和 libC(兼容模式)需要 libthread,因此必须使用 -mt 选项。

如果在不同的步骤中进行编译和链接,且使用 -mt 进行编译,应确保使用 -mt 进行链接(如以下示例中所示),否则会产生意外的结果。


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

如果要混合使用并行 Fortran 对象与 C++ 对象,必须在链接行中指定 -mt 选项。

C99 支持在兼容模式 (-compat=4) 下不可用。

另请参见

–xnolib10.5 缓存成员变量、《多线程编程指南》和《链接程序和库指南