Page 1 of 1

pthread_create ->

Posted: 10. Jun 2007 18:17
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

Posted: 10. Jun 2007 20:01
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;

Posted: 11. Jun 2007 10:01
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.

Posted: 27. Jun 2007 19:30
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.

Posted: 29. Jun 2007 18:22
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.