avec -lpthread, compilateur g++ erreur “undefined reference to ” sémaphore appels tels que "sem_open'

Je suis nouveau à posix thread library, et j'ai essayé de compiler un exemple de code à partir d'un tutoriel avec:

g++ -lpthread agreement.cpp -o agreement

cependant je n'étais pas en mesure de compiler le code et j'ai obtenu le message d'erreur suivant:

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

Je suis conscient que -lpthread est nécessaire pour la compilation de travail, mais est-il des autres options je pourrais avoir besoin pour résoudre le problème? si non, comment dois-je installer le "bon" bibliothèque pthread?

Merci pour votre aide!

Vous souhaitez -pthread, pas -lpthread. La compilation avec les pthreads soutien peut exiger plus que juste une bibliothèque. Votre plate-forme peut exiger -lrt pour les sémaphores (avez-vous vérifiez la page de man?).
Undefined reference est linker, et non compilateur d'erreur.
Aussi, les objets (et les archives) de fournir les symboles doivent être commandés après objets à l'aide de ces symboles lors de la liaison. Il ne peut pas d'importance ici, mais prenez l'habitude de mettre -lfoo vers le fin de la commande, pas le démarrer.

OriginalL'auteur Mike | 2012-06-20