为什么在使用gcc编译器进行多线程编程时应该打开“-pthread”标志

时间:2013-01-18 06:33:07

标签: pthreads

我刚从Windows迁移到Linux世界。一切都是新的,因为环境是如此不同。

无论如何,我正在学习APUE书并试图用gcc编译mutilthread代码。

代码使用pthread_create函数并包含pthread.h

我收到了pthread_create函数未声明的错误消息,尽管我已包含<pthread.h>

我用Google搜索并得到了答案,即在编译时将选项-pthread置于其中。 比如gcc -pthread blah.c

然后它编译并正常工作。

但我不知道-pthread实际上做了什么。为什么我必须这样做,虽然我包括“pthread头文件”

谢谢!

1 个答案:

答案 0 :(得分:0)

在代码中包含一些文件并不高效,您可能需要链接一些准备好的库,这些库是二进制实现的代码(类似于Windows中的DLL)。因此你遇到了这个错误。当你为gcc使用-pthread标志时,它会自动将你的对象链接到lpthread库并执行一些预处理器任务。 我建议你看下面的链接,我发现它很有用。

gcc - significance of -pthread flag when compiling