执行
$ make
(gcc -Wall -g -O0 -c p*v.c)
(gcc -lpthread p*v.o c*p.o -o p*v)
报错如下
p*v.o:在函数‘init’中:
/media/psf/p*v.c:187:对‘sem_init’未定义的引用
c*p.o:在函数‘Pthread_create’中:
/media/psf/c*p.c:461:对‘pthread_create’未定义的引用
c*p.o:在函数‘Pthread_cancel’中:
/media/psf/c*p.c:468:对‘pthread_cancel’未定义的引用
c*p.o:在函数‘Pthread_join’中:
/media/psf/c*p.c:475:对‘pthread_join’未定义的引用
c*p.o:在函数‘Pthread_detach’中:
/media/psf/c*p.c:483:对‘pthread_detach’未定义的引用
c*p.o:在函数‘Pthread_once’中:
/media/psf/c*p.c:497:对‘pthread_once’未定义的引用
c*p.o:在函数‘Sem_init’中:
/media/psf/c*p.c:506:对‘sem_init’未定义的引用
c*p.o:在函数‘P’中:
/media/psf/c*p.c:512:对‘sem_wait’未定义的引用
c*p.o:在函数‘V’中:
/media/psf/c*p.c:518:对‘sem_post’未定义的引用
collect2: error: ld returned 1 exit status
< builtin >: recipe for target ‘p*v’ failed
make: * [p*v] Error 1
解决方法:
gcc 后面加上 -pthread
Reference:
https://bbs.csdn.net/topics/392172670