Oracle Solaris Studio 12.2:C++ 用户指南

A.2.55 -mt[={yes |no}]

使用此选项,可以通过 Solaris 线程或 POSIX 线程 API 编译和链接多线程代码。-mt=yes 选项可确保以适当的顺序链接库。

此选项将 -D_REENTRANT 传递给预处理程序。

要使用 Solaris 线程,请包括 thread.h 头文件并使用 -mt=yes 选项进行编译。要在 Solaris 平台上使用 POSIX 线程,应将 pthread.h 头文件包含进来并使用 -mt=yes -lpthread 选项进行编译。

在 Linux 平台上,只有 POSIX 线程 API 可用。(Linux 平台上没有 libthread)。因此,Linux 平台上的 -mt=yes 会添加 -lpthread,而不是 -lthread。要在 Linux 平台上使用 POSIX 线程,应使用 -mt=yes 进行编译。

请注意,使用 -G 进行编译时,-mt=yes 不会自动包含 -lthread-lpthread。生成共享库时,您需要显式列出这些库。

-xopenmp 选项(用于使用 OpenMP 共享内存并行化 API)自动包含 -mt=yes

如果使用 -mt=yes 进行编译并在一个单独的步骤中进行链接,则必须在链接步骤和编译步骤中使用 -mt=yes 选项。如果使用 -mt 编译和链接一个翻译单元,则必须使用 -mt 编译和链接程序的所有单元。

-mt=yes 是编译器的缺省行为。如果不需要此行为,请使用 -mt=no 进行编译。

选项 -mt-mt=yes 等效。

A.2.55.1 另请参见

-xnolib、Solaris《多线程编程指南》和《链接程序和库指南