undefined reference to `pthread_create'

Post Reply
Message
Author
abto
Posts: 23
Joined: 30. Mar 2002 1:41

undefined reference to `pthread_create'

#1 Post by abto »

Hallo,

ich versuche mich zur Zeit an Multithreading-Programmierung unter Linux.
Nachdem ich nun etlich Versuche gestartet habe mit den im Netz vorhanden Beispielen bin ich mit meinem Latein nun am Ende.
Wenn ich versuche ein Programm zu compilieren kommt immer eine Fehlerausgabe in folgender Form:

> g++ -D_REENTRANT -o clonetest clonetest.cpp
/tmp/ccgESqSv.o: In function `main':
/tmp/ccgESqSv.o(.text+0xbf): undefined reference to `pthread_create'
collect2: ld returned 1 exit status
>

so wie es aussieht gibt es keinen Einsprungpunkt für die Funktion zum POSIX-Konformen erzeugen eines Threads, obwohl die glibc die Unterstützung enthalten sollte (andere pthread_*-Funktionen lassen sich nämlich linken - nützt nur nix, wenn ich keine Threads erzeugen kann).

Ich hoffe Ihr könnt mir helfen das Problem zu lösen. Vieleicht hab ich auch nur was übersehen, dann öffnet mir bitte die Augen.

Danke schon im Voraus
Oliver G. "AbtO" Abt

domseichter
Posts: 57
Joined: 11. Feb 2002 22:08
Location: Laufen
Contact:

Re: undefined reference to `pthread_create'

#2 Post by domseichter »

Ich glaube Du musst Deinen code noch gegen die libpthread linken. Also so compilieren:
g++ -D_REENTRANT -lpthread -o clonetest clonetest.cpp

Cu Dom

Descartes

Re: undefined reference to `pthread_create'

#3 Post by Descartes »

> /tmp/ccgESqSv.o(.text+0xbf): undefined reference to `pthread_create'
> collect2: ld returned 1 exit status

du musst gegen die libpthread linken wenn du schon Funktionen aus dieser Bibliothek benutzt

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
frodo:~/src % cat main_thread.c
#include <pthread.h>

int main()
{
pthread_create(NULL,NULL,NULL,NULL);
return 0;
}
frodo:~/src % gcc -o main_thread_demo main_thread.c
/tmp/ccAz8303.o: In function `main':
/tmp/ccAz8303.o(.text+0xf): undefined reference to `pthread_create'
collect2: ld returned 1 exit status
frodo:~/src % gcc -o main_thread_demo main_thread.c -lpthread
^^^^^^^^^
frodo:~/src %
</font><hr></pre></blockquote>

> so wie es aussieht gibt es keinen Einsprungpunkt für die Funktion zum
> POSIX-Konformen erzeugen eines Threads, obwohl die glibc die Unterstützung
> enthalten sollte
Wer behauptet denn, dass die PThread Funktionen in der glibc drin sind ?

> (andere pthread_*-Funktionen lassen sich nämlich linken - nützt nur nix,
> wenn ich keine Threads erzeugen kann).
Verwechselst du hier Header mit Library ?
Den Header <pthread.h> kannst du natürlich immer verwenden. Die Funktionen die darin deklariert sind, existieren jedoch nur in der libpthread, also musst du beim Linken auch diese Bibliothek verwenden indem du dem Aufruf die Option -lpthread mitgibst.

abto
Posts: 23
Joined: 30. Mar 2002 1:41

Re: undefined reference to `pthread_create'

#4 Post by abto »

: g++ -D_REENTRANT -lpthread -o clonetest clonetest.cpp
genau danach hatte ich gesucht, danke!
Manchmal sieht man halt den Wald vor lauter Bäumen nicht...

Gruß
Oliver

Post Reply