在用make命令编译的时候,出错,提示如下
gcc -lpthread server.o parse.o serial.o -o server
server.o : in function 'main'
server.c(.text+0X337): undefined reference to 'pthread_create'
server.c(.text+0X37f): undefined reference to 'pthread_create'
collect2: ld返回1
make: *** [server]错误 1
之后,将‘gcc -lpthread server.o parse.o serial.o -o server’ 修改为 'gcc server.o parse.o serial.o -o server -lpthread'编译成功了。
lpthread库不是linux默认的库,所以要显示的指出。
lpthread是表示要连接到pthread的库是这里省略的lib,连接时需要使用静态库 libpthread.a,所以在使用pthread_create()创建线程, 以及调用 pthread_atfork()函数建立fork处理程序时,在编译中要加 -lpthread参数。例如:在加了头文件#include <pthread.h>之后执行 pthread.c文件,需要使用如下命令:
gcc thread.c -o thread -lpthread
这种情况类似于<math.h>的使用,需在编译时加 -m 参数,比如:使用pow等数学计算函数,需要用到math.h 需要 -lm