Je n'arrive pas à compiler mon code, qui utilise un mutex (donc utilise des verrous et conditions pthread). J'ai essayé d'inclure le fichier d'en-tête, en compilant avec -pthread ou -lpthread, mais je reçois toujours une erreur. L'aide serait très appréciée.Code C - Pthread ne compile pas
Ceci est la sortie d'erreur:
déclaration implicite de la fonction « pthread_mutex_lock » [-Wimplicit-fonction-déclaration] pthread_mutex_lock (& serrure); // verrouillé ^ /tmp/cchVS47i.o: En fonction getMessage1': hw3.c:(.text+0x22): undefined reference to
pthread_mutex_lock. hw3.c :(texte + 0x50): undefined reference to Pthread_mutex_lock' /tmp/cchVS47i.o: In function
getMessage2' : hw3.c :(texte + 0x13e):. Non définie référence à `pthread_mutex_lock » collect2: erreur: ld retourné 1 état de sortie
Et voici les sections pertinentes de mon code (modifié pour plus de clarté):
#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;
}
avez-vous donné la bibliothèque comme argument –
que voulez-vous dire par argument? J'ai essayé de compiler avec des variations de gcc -Wall -Wextra -pedantic -pthread hw3.c -lpthread – Selena
Je pensais que vous n'avez pas inclus la bibliothèque –