関数内で pthread_mutex_lock を pthread_mutex_trylock に置き換えたいのですが、そうすると、「未定義の参照」エラー メッセージが表示されます (以下を参照)。行 411 から 13 を pthread_mutex_lock(&cmd_queue_lock) に置き換えると、リンカ エラーは発生しません。
それらは両方とも、私が既に含めている同じライブラリからのものです。1 つはリンカ エラーを生成し、もう 1 つは生成しないのはなぜですか? さらに重要なことに、どうすれば修正できますか?「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