所以我的问题是:为什么在编译命令的末尾需要“ -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
或不包含标志-lib
,LIBRARY_NAME
则将无法使用外部库。
在这种情况下,假设您正在使用函数pthread_create
和pthread_join
,那么您会得到一条错误消息:
undefined reference to `pthread_create'
undefined reference to `pthread_join'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句