-pthread标志在编译时的意义

在各种multithreading的C和C ++项目中,我已经看到了-pthread标志应用于编译和链接阶段,而其他标志完全不使用它,只是将-lpthread传递给链接阶段。

有没有编译和链接与-pthread标志的任何危险 – 即-pthread实际上做什么? 我主要对Linux平台感兴趣。

尝试:

 gcc -dumpspecs | grep pthread 

并寻找以%{pthread:开始的任何内容。

在我的计算机上,这会导致使用-D_REENTRANT文件,并使用-lpthread链接。 在其他平台上,这可能会有所不同。 使用-pthread获得大多数可移植性。

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

man gcc

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