所以我的问题是:为什么在编译命令的末尾需要“-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'