mit -lpthread, g++ compiler-Fehler "undefined reference to" semaphor-Aufrufe wie "sem_open'

Ich bin neu in der posix-thread-Bibliothek, und ich habe versucht zu kompilieren, ein Beispielcode aus einem tutorial mit:

g++ -lpthread agreement.cpp -o agreement

allerdings war ich nicht in der Lage, den code zu kompilieren und bekam die folgende Fehlermeldung:

a3q2.cpp:(.text+0x7e): undefined reference to `sem_open'
a3q2.cpp:(.text+0xab): undefined reference to `sem_wait'
a3q2.cpp:(.text+0x290): undefined reference to `sem_post'
a3q2.cpp:(.text+0x2af): undefined reference to `sem_close'
a3q2.cpp:(.text+0x2bb): undefined reference to `sem_unlink'
collect2: ld returned 1 exit status
make: *** [a3q2_exe] Error 1

Ich bin mir bewusst, dass -lpthread ist erforderlich, damit die Kompilierung funktioniert, aber gibt es irgendwelche anderen Optionen, die ich benötigen könnte um das problem zu lösen? wenn nicht, wie muss ich die Installation der "richtigen" pthread-Bibliothek?

Vielen Dank für Ihre Hilfe!

  • Sie möchten -pthread, nicht -lpthread. Kompilieren mit pthreads unterstützen kann verlangen, mehr als nur eine Bibliothek. Ihre Plattform erfordern -lrt für Semaphoren (haben Sie die man-Seite?).
  • Undefined reference ist linker, nicht compiler Fehler.
  • Außerdem sind Objekte (und Archiven) bietet Symbole müssen bestellt werden, die nach Objekten mit diesen Symbolen, wenn Sie die Verknüpfung. Es kann nicht Sache hier, aber bekommen in die Gewohnheit, dass Sie -lfoo gegen Ende des Befehls, nicht den Anfang.
InformationsquelleAutor Mike | 2012-06-20
Schreibe einen Kommentar