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

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

无论如何,我正在学习 APUE 书籍并尝试使用 gcc 编译多线程代码。

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

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

我用谷歌搜索并得到答案,即在我编译时将选项 -pthread 放在上面。像 gcc -pthread blah.c

然后它编译并正常工作。

但我想知道 -pthread 实际上做了什么。以及为什么我必须这样做,尽管我包含“pthread 头文件”

谢谢!

stack overflow why "-pthread" flag should be on when using gcc compiler for multithread programming
原文答案

答案:

作者头像

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

gcc - significance of -pthread flag when compiling