所以我的问题是:为什么在编译命令的末尾需要“-lpthread”?

为什么此命令起作用:

gcc -o name name.c -lpthread

但这不会:
gcc -o name name.c

我在我的C代码中使用了pthread.h库。
我已经在网上寻找一些答案,但是并没有真正找到可以理解的答案

最佳答案

pthread.h不是库,它只是头文件,它为您提供要用于多线程的函数的声明(而不是函数的实际主体)。

在编译时使用-libpthread-lpthread实际上将GCC库pthread与您的代码链接。因此,编译器标志-libLIBRARY_NAME-lLIBRARY_NAME是必不可少的。

如果您没有在-l中包含-libLIBRARY_NAME标志,则将无法使用外部库。

在这种情况下,假设您使用的是pthread_createpthread_join函数,那么您将得到一条错误消息:

undefined reference to `pthread_create'

undefined reference to `pthread_join'

10-08 07:37