2009-06-01 5 views
1

Ich versuche, ein Programm zu kompilieren, schrieb ich in C++ für eine Zuordnung, die Pthreads verwendet. Ich verwende Eclipse in Linux, und ich hatte keine Probleme beim Kompilieren, nachdem ich den Compiler-Argumenten "-lpthread" hinzugefügt habe (zu g ++, gcc und Linker). Als ich im Begriff war zu laufen und zu debuggen, gab mir Eclipse jedoch ein Fehlermeldungsfenster "Starten fehlgeschlagen. Binär nicht gefunden".pthreads kompilieren aber binär ist nicht erstellt

Ich habe versucht, es mit gcc und g ++ manuell zu kompilieren, mit den Suffixen -pthread und -lpthread, und das Ergebnis ist ähnlich - "gcc: -pthread: Keine solche Datei oder Verzeichnis".

Nicht sicher, was falsch ist, denn es kompiliert ohne Probleme, produziert nur keine exe. Ich glaube, ich müsste etwas apt-bekommen.

alles, was ich tun sollte?

Antwort

7

Wie kompilieren Sie? Dies sollte gut funktionieren:

gcc -o foo foo.c -lpthread

+0

gcc -pthread ./*.cpp -o Ex2.exe g ++ -pthread ./*.cpp -o Ex2.exe gcc -lpthread ./*.cpp -o Ex2.exe g ++ -lpthread ./ * .cpp -o Ex2.exe von denen nicht arbeiten. – Nefzen

+2

@Nefzen - verwenden Sie nicht zwei Bindestriche vor pthread, es ist nur ein einzelner Bindestrich. –

+1

Sie brauchen nur eine pthread-Anweisung und -lpthread am Ende ist genug. – ismail

3

g++ -pthread -ggdb -Wall -pedantic -o myexe *.cpp -lpthread sollte funktionieren.

+0

jetzt gibt es mir einen "undefinierten Verweis auf' void * Run (void *) '"Fehler, obwohl immer noch kein Fehler in Eclipse, und doch noch nicht eine Binärdatei . – Nefzen

+1

Das bedeutet, dass der Linker die Vorlagenerweiterung für die Funktion Run() nicht finden kann. –

+0

Ja, ich habe die Vorlage in die Kopfzeile verschoben, hätte sie vorher abholen sollen. Nun, es läuft, aber ich bekomme eine Ausnahme, die es nicht fängt, wahrscheinlich in einem anderen Thread: \ – Nefzen