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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du willst die compile-option
-pthread
(wenn Sie wirklich mit pthreads). Wenn Sie müssen nur jene Funktionen, die Sie inlibrt
so verwenden-lrt
-pthread
aber könnten Sie näher erläutern, warum das so ist? und was ist der Unterschied zwischen-lpthread
und-pthread
? Dank