541 Stimmen

Undefinierter Verweis auf pthread_create in Linux

Ich habe die folgende Demo aus dem Internet heruntergeladen https://computing.llnl.gov/tutorials/pthreads/

#include <pthread.h>
#include <stdio.h>
#define NUM_THREADS     5

void *PrintHello(void *threadid)
{
   long tid;
   tid = (long)threadid;
   printf("Hello World! It's me, thread #%ld!\n", tid);
   pthread_exit(NULL);
}

int main (int argc, char *argv[])
{
   pthread_t threads[NUM_THREADS];
   int rc;
   long t;
   for(t=0; t<NUM_THREADS; t++){
      printf("In main: creating thread %ld\n", t);
      rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t);
      if (rc){
         printf("ERROR; return code from pthread_create() is %d\n", rc);
         exit(-1);
      }
   }
   pthread_exit(NULL);
}

Aber wenn ich es auf meinem Rechner (mit Ubuntu Linux 9.04) kompiliere, erhalte ich folgenden Fehler:

corey@ubuntu:~/demo$ gcc -o term term.c
term.c: In function ‘main’:
term.c:23: warning: incompatible implicit declaration of built-in function ‘exit’
/tmp/cc8BMzwx.o: In function `main':
term.c:(.text+0x82): undefined reference to `pthread_create'
collect2: ld returned 1 exit status

Das ergibt für mich keinen Sinn, denn die Kopfzeile enthält pthread.h die die pthread_create Funktion. Hat jemand eine Idee, was falsch läuft?

0voto

user1793997 Punkte 69

Wenn Sie mehrere Bibliotheken verwenden, müssen Sie manchmal die Bibliotheksabhängigkeit überprüfen. (z.B. -lpthread -lSDL... <==> ... -lSDL -lpthread)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X