Oracle Solaris Studio 12.2:C 用户指南

B.2.50 -mt[={yes |no}]

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

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

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

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

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

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

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

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

选项 -mt 等效于 -mt=yes

B.2.50.1 另请参见

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