我有一段时间跟踪所有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
答案 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
。对于Solaris 2,它说:
-pthreads
。-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;设置。