编译时-pthread标志的重要性

时间:2010-01-24 16:33:14

标签: c++ c linux pthreads

在各种多线程C和C ++项目中,我看到-pthread标志应用于编译和链接阶段,而其他人根本不使用它,只是将-lpthread传递给链接阶段。

是否存在没有编译和链接-pthread标志的危险 - 即-pthread实际上做了什么?我主要对Linux平台感兴趣。

2 个答案:

答案 0 :(得分:102)

尝试:

gcc -dumpspecs | grep pthread

并查找以%{pthread:开头的任何内容。

在我的计算机上,这会导致使用-D_REENTRANT编译文件,并与-lpthread链接。在其他平台上,这可能会有所不同。使用-pthread获得最多的便携性。

在GNU libc上使用_REENTRANT,改变了一些libc头的工作方式。作为一个具体的例子,它使errno调用一个返回线程本地位置的函数。

答案 1 :(得分:37)

来自man gcc

  

-pthread              使用pthreads添加对多线程的支持   图书馆。这个              option为预处理器和链接器设置标志。