我在編譯我的代碼時遇到問題,它使用互斥鎖(所以使用pthread鎖和條件)。我試過包括頭文件,用-pthread或-lpthread編譯,但我仍然收到錯誤。幫助將不勝感激。C代碼 - Pthread不編譯
這是誤差輸出:
的函數「的pthread_mutex_lock」 [-Wimplicit函數聲明] 的pthread_mutex_lock(&鎖)隱式聲明; //鎖定 ^ /tmp/cchVS47i.o:在功能getMessage1': hw3.c:(.text+0x22): undefined reference to
的pthread_mutex_lock」。 hw3.c :(文本+爲0x50):未定義參照Pthread_mutex_lock' /tmp/cchVS47i.o: In function
getMessage2' : hw3.c :(文本+ 0x13e):未定義參考`調用pthread_mutex_consistent_np」 collect2:錯誤:LD返回1退出狀態
,這裏是我的代碼的有關章節(編輯爲清楚起見):
#define _GNU_SOURCE
#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<pthread.h>
#include<stdlib.h>
char message[1001];
pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t condition = PTHREAD_COND_INITIALIZER;
void *getMessage1()
{
Pthread_mutex_lock(&lock); //locked
....
}
int main(void)
{
pthread_t id1;
pthread_t id2;
pthread_create((&id1), NULL, getMessage1, NULL);
pthread_create((&id2), NULL, getMessage2, NULL);
...
return 0;
}
你有沒有給過庫作爲參數 –
你是什麼意思的論據?我試過編譯gcc -Wall -Wextra -pedantic -pthread hw3.c -lpthread – Selena
的變體,我以爲你沒有包括庫 –