gcc选项-pthread是什么意思?

时间:2016-09-30 02:08:05

标签: gcc makefile

我有一段时间跟踪所有gcc选项的文档。我在ubuntu机器上,所以甚至不确定这是否与我相关。

来自这个制定规则:

my-server: my-server.c
  $(CC) -Wall -pthread my-server.c -o my-server

我找到了此选项摘要: https://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/Option-Summary.html

2 个答案:

答案 0 :(得分:4)

来自man gcc

  

-lpthread

     

使用POSIX线程库添加对多线程的支持。此选项为预处理器和链接器设置标志。它不会影响编译器生成的目标代码或随其提供的库的目标代码的线程安全性。这些是HP-UX特定标志。

请注意,它与-lpthread不同。 _REENTRANT选项不设置预处理程序标志。例如,宏__USE_REENTRANT<div class="row" id="aboutMeTitle"><p>About Me</p></div>

答案 1 :(得分:2)

在GCC(6.2.0)的文档中,它被视为特定于平台的选项。对于RS6000 and PowerPC,它说:

  • -pthread
    使用pthreads库添加对多线程的支持。此选项为预处理器和链接器设置标志。

对于Solaris 2,它说:

  • -pthreads
    使用POSIX线程库添加对多线程的支持。此选项为预处理器和链接器设置标志。此选项不会影响编译器生成的目标代码或随其提供的库的目标代码的线程安全性。
  • -pthread
    这是-pthreads
  • 的同义词

常见的线索&#39; (抱歉 - 无法抗拒)是它确保代码编译并与确保使用POSIX线程库的选项链接。在该选项有效的其他平台上也是如此(Linux,macOS Sierra,之前的Mac OS X,......)它将与正确的库链接并启用任何相关的预处理器选项。

您可以比较输出:

gcc -v -pthread -o x1 pthread-prog.c
gcc -v.         -o x2 pthread-prog.c

查看-pthread选项有何不同之处。在macOS Sierra上,它将-D_REENTRANT添加到cc1阶段,将-pthread添加到&#39; COLLECT_GCC_OPTIONS&#39;设置。