pthread_create ->

Antworten
Nachricht
Autor
pcAlko
Beiträge: 70
Registriert: 14. Mai 2007 19:27

pthread_create ->

#1 Beitrag von pcAlko » 10. Jun 2007 18:17

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: Alles auswählen

#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 Beitrag von sesame » 10. Jun 2007 20:01

vielleicht hilft dir folgendes aus meinem buch:

Code: Alles auswählen

#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;

Benutzeravatar
Lateralus
prolinux-forum-admin
Beiträge: 1238
Registriert: 05. Mai 2004 7:35

#3 Beitrag von Lateralus » 11. Jun 2007 10:01

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

pcAlko
Beiträge: 70
Registriert: 14. Mai 2007 19:27

#4 Beitrag von pcAlko » 27. Jun 2007 19:30

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.

Benutzeravatar
Lateralus
prolinux-forum-admin
Beiträge: 1238
Registriert: 05. Mai 2004 7:35

#5 Beitrag von Lateralus » 29. Jun 2007 18:22

Code: Alles auswählen

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.

Antworten