Pthreads de la compilation ne fonctionne pas
J'ai écrit un code mais il ne semble pas fonctionner quand je compile il. Je suis en train de lancer ce dans Ubuntu:
#include <pthread.h>
#include <ctype.h>
#include <unistd.h>
char buffer[128];
void *write_thread(void *args)
{
int count = *((int*)args);
write(STDOUT_FILENO, buffer, count);
pthread_exit(0);
}
void *toupper_thread(void *args)
{
int i;
int count = *((int*)args);
for(i = 0; i < count; i++) {
buffer[i] = toupper(buffer[i]);
}
pthread_t writeId;
pthread_create(&writeId, NULL, write_thread, &count);
pthread_join(writeId, NULL);
pthread_exit(0);
}
void *read_thread(void *args)
{
int count = read(STDIN_FILENO, buffer, 128);
pthread_t toupperId;
pthread_create(&toupperId, NULL, toupper_thread, &count);
pthread_join(toupperId, NULL);
//buffer[count] = 0;
pthread_exit(0);
}
int main()
{
pthread_t threadId;
pthread_create(&threadId, NULL, read_thread, NULL);
pthread_join(threadId, NULL);
}
et j'obtiens ces erreurs lorsque j'essaye de le compiler avec gcc -pthread prob41.c
ou avec gcc prob41.c -lpthread
:
prob41.c:1:21: error: pthread.h: No such file or directory
prob41.c: In function ‘toupper_thread’:
prob41.c:23: error: ‘pthread_t’ undeclared (first use in this function)
prob41.c:23: error: (Each undeclared identifier is reported only once
prob41.c:23: error: for each function it appears in.)
prob41.c:23: error: expected ‘;’ before ‘writeId’
prob41.c:24: error: ‘writeId’ undeclared (first use in this function)
prob41.c: In function ‘read_thread’:
prob41.c:33: error: ‘pthread_t’ undeclared (first use in this function)
prob41.c:33: error: expected ‘;’ before ‘toupperId’
prob41.c:34: error: ‘toupperId’ undeclared (first use in this function)
prob41.c: In function ‘main’:
prob41.c:45: error: ‘pthread_t’ undeclared (first use in this function)
prob41.c:45: error: expected ‘;’ before ‘threadId’
prob41.c:46: error: ‘threadId’ undeclared (first use in this function)
Je ne sais pas ce que je fais mal.
- Avez-vous libc6-dev installé?
Vous devez vous connecter pour publier un commentaire.
Il semble que vous avez manqué certaines dépendances.
Essayez ceci:
sudo apt-get upgrade -y
Besoin d'ajouter option-I de la commande de la compilation de permettre au compilateur de trouver des pthreads.h
adapté de la bibliothèque pour elle.
#include <sys/type.h>
gcc -lpthread {x}.c -o {y}