为什么需要“ -lpthread”?

TH

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

为什么此命令起作用:

gcc -o name name.c -lpthread

但这不会:

gcc -o name name.c

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

Prajwal Shetye

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'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章