Pthreads -编译pthread代码时的lpthread和-pthread选项

Pthreads -编译pthread代码时的lpthread和-pthread选项,pthreads,Pthreads,我尝试使用g++编译简单的pthread代码 据我所知,我应该使用-lpthread,但它不能使可执行文件 下面是错误代码(看起来libpthread没有链接): 然而,有趣的是,当我使用选项-pthread编译时,它被正确编译并且完全工作良好 我的g++版本是gcc版本5.2.1 20151010(Ubuntu 5.2.1-22ubuntu2)。选项-l指示编译器将程序链接到指定的库,因此-lpthread意味着链接pthread库。 -pthread是构建 gcc中的线程程序。 -pthre

我尝试使用g++编译简单的pthread代码

据我所知,我应该使用
-lpthread
,但它不能使可执行文件

下面是错误代码(看起来libpthread没有链接):

然而,有趣的是,当我使用选项
-pthread
编译时,它被正确编译并且完全工作良好


我的g++版本是gcc版本5.2.1 20151010(Ubuntu 5.2.1-22ubuntu2)。选项
-l
指示编译器将程序链接到指定的库,因此
-lpthread
意味着链接pthread库。
-pthread
是构建 gcc中的线程程序。

-pthread
如果可用的话是首选的。

我知道您想指出什么,但有趣的是,我的gcc/g++无法使用-lpthread选项编译源代码,但它可以使用-pthread选项。你知道为什么吗?另外,当我同时使用两个选项时,它也可以工作。我刚刚在Makefile CPPFLAGS=-g-pthread-lpthread-std=c++11-o0中添加了这个标志。通常,库应该遵循命令上的源和对象。使用
-lpthread
作为最后一个编译器标志。可能是预处理器错误,因为
-lpthread
没有为预处理器设置标志。您可以尝试使用
-lpthread-D_REENTRANT
undefined reference to `pthread_create'