-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的支持。 此选项为预处理器和链接器设置标志。