2011-11-25 19 views
6

Tengo ubuntu 11 instalado en mi sistema. Tengo un programa c que usa la biblioteca pthread. Recibo el error Undefined reference to sem_wait() incluso si he compilado con la bandera -lpthread.gcc -lpthread no funciona

por ejemplo:

gcc -lpthread prog.c 

El programa funciona bien en otras instalaciones de Ubuntu.

+1

¿Puedes intentar compilar algo más con pthread calls? – DanZimm

+1

El orden de enlace importa. Las bibliotecas tienen que llegar al final solamente. –

Respuesta

12

Probar:

gcc -pthread 

en lugar de -lpthread. La diferencia es significativa, creo. ¡Este último está enlazando contra libpthread, el primero está vinculando contra libpthread y un montón de otras cosas también!

sem_wait es parte de librt, por lo que podría utilizar gcc -lrt, pero -pthread lo hace por usted (¡y todo lo demás también!).

+0

¡Gracias! esto funciona bien –

Cuestiones relacionadas