我想在函数中用 pthread_mutex_trylock 替换 pthread_mutex_lock,当我这样做时,我收到“未定义的引用”错误消息(见下文)。如果我用 pthread_mutex_lock(&cmd_queue_lock) 替换第 411-13 行,我不会收到链接器错误。
它们都来自我已经包含的同一个库。为什么一个会产生链接器错误而另一个不会?更重要的是,我该如何解决它?我尝试添加“extern int pthread_mutex_trylock”并更改 Makefile 中 .o 文件的顺序,但两者都不起作用。
$ nl clientmain.c
12 #include <stdio.h>
...
21 #include <pthread.h>
411 if (pthread_mutex_trylock(&cmd_queue_lock) == EBUSY) {
412 continue;
413 }
$ make
clientmain.o: In function `createHC':
clientmain.c:411: undefined reference to `pthread_mutex_trylock'
collect2: ld returned 1 exit status
make: *** [clientmain] Error 1