没有引用pthread_mutex_lock和-lpthread编译

时间:2016-03-01 06:21:47

标签: c pthreads mutex linker-errors undefined-reference

我正在编译一个包含来自pthread库的互斥量信号量的程序,但是当我使用-lpthread标志编译时,我得到一个未定义的引用错误。

gcc -lpthread prodcon.c
/tmp/ccESOlOn.o: In function `producer':
prodcon.c:(.text+0x2e): undefined reference to `pthead_mutex_lock'
prodcon.c:(.text+0xd6): undefined reference to `pthead_mutex_unlock'
collect2: ld returned 1 exit status

互斥锁的语法如下:

pthread_mutex_t mutex1;

是一个全局声明,因此它可以被多个线程使用。在函数中我称之为互斥体:

pthead_mutex_lock(&mutex1);
pthead_mutex_unlock(&mutex1);

但是我收到编译器错误,我也尝试使用-pthread标志进行编译

gcc -pthread prodcon.c
/tmp/cc6wiQPR.o: In function `producer':
prodcon.c:(.text+0x2e): undefined reference to `pthead_mutex_lock'
prodcon.c:(.text+0xd6): undefined reference to `pthead_mutex_unlock'
collect2: ld returned 1 exit status

我已经搜索了答案,但是我感到很茫然,并且在我在包含互斥锁的库中进行链接时,会理解为什么它有一个未定义的引用。

1 个答案:

答案 0 :(得分:2)

订单很重要,请使用:

gcc prodcon.c -lpthread 

或更好:

gcc -Wall -Wextra -pedantic -pthread prodcon.c -lpthread

您确定使用pthead_mutex_lock吗?或者这是一个错字?无论如何它应该是pthread_mutex_lock。与pthread_mutex_unlock相同。