Pthreads -编译pthread代码时的lpthread和-pthread选项
我尝试使用g++编译简单的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
-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'