pthread_create ->

Post Reply
Message
Author
pcAlko
Posts: 70
Joined: 14. May 2007 19:27

pthread_create ->

#1 Post by pcAlko »

Hallo liebe Community!

das mit dem Googlen wird mir jetzt langsam zu blöd! :?
Ich hoffe dass mir jemand von euch weiterhelfen kann!

überall lese ich dass ich einen neuen thread so erzeuge:

Code: Select all

#include <pthread.h>

void *mythread&#40;void *args&#41;
&#123;
                 ....
&#125;

int main&#40;&#41;
&#123;
    pthread_t thread;
    pthread_create&#40;&thread, NULL, mythread, NULL&#41;;
&#125;
bei mir bringt der gcc compiler sowie der g++ compiler
beim linken den Fehler:
"undefined reference to `pthread_create'"

hat jemand ne Ahnung was ich da falsch mache?
oder muss ich irgend eine Bibliothek dazu linken?
in den manpages habe ich nichts davon gelesen.
und es wird auch in keinem tutorial das ich ergoogelt habe erwähnt!

Bitte um Hilfe:

8) pcAlko

sesame

#2 Post by sesame »

vielleicht hilft dir folgendes aus meinem buch:

Code: Select all

#include <process.h>
#include <stdio.h>

void funktion(void *dummy) {
...
_endthread();
}

void main() {
...
_beginthread(funktion, 0, NULL);
// durch '0' wird gleiche Stackgöße wie für Hauptthread benutzt.
...
}
&#91;code&#93;
&#91;/code&#93;

User avatar
Lateralus
prolinux-forum-admin
Posts: 1238
Joined: 05. May 2004 7:35

#3 Post by Lateralus »

Versuch den Compiler mit der Option "-lpthread" laufen zu lassen, damit gegen diese Bibliotheken gelinkt wird - das sollte auch in den Handbuchseiten stehen.

pcAlko
Posts: 70
Joined: 14. May 2007 19:27

#4 Post by pcAlko »

Danke Lateralus!
das hat das Problem gelöst.

was meinst Du mit Handbuchseiten?
kannst Du mir ein gutes Buch empfehlen dass hauptsächlich auf den GCC Compiler abziehlt?
Ich muss mir sowas unbedingt einmal zulegen.
Im Internet findet man einfach nicht alles.
zur Zeit schlage ich mich gerade mit dem map Container herum
finde kein Tutorial das sich mit dem beschäftigt.

User avatar
Lateralus
prolinux-forum-admin
Posts: 1238
Joined: 05. May 2004 7:35

#5 Post by Lateralus »

Code: Select all

man man
erzählt dir, was Handbuchseiten sind. Es gibt zu den meisten (wenn nicht allen) C-Funktionen Handbuchseiten, einfach mal mit "apropos NAME" nach den entsprechenden Handbuchseiten suchen und dir anschauen. Manchmal steht drin, wie du das ganze linken musst. Allgemein musst du fast alles linken. (Ich denke, das war früher anders und habe nicht genug Ahnung von Compilern oder dem GCC, als das ich erklären könnte, warum.)
Allgemein gibt es aber zu jeder include-Datei NAME.h in /usr/include eine Bibliothek libNAME.a, welche in /usr/lib zu finden ist. Der eigentliche Code steht dort drin. Um also Funktionen zu finden, musst du dem gcc mitteilen, dass du gegen eine entsprechende Bibliothek linken willst. (-lpthread)

Weiter kann ich dir leider nicht helfen... Ein Buch zum GCC ist vielleicht nicht das, was du suchst - bei anderen Compilern ist das, glaube ich, ähnlich.

Post Reply