Semaforos que no encuentran funciones

Hola a todos.

Bueno, estoy intentando hacer un programita (en C++) con hilos que se sincronizan mediante semaforos y creo que lo he hecho todo bien, solo que hay un pequeño fallo al compilar:


batousay@tux ~/AVI/Concurso/Estable14 $ g++ -o MaxFlow *.cc -g
/tmp/ccBQsxNV.o(.text+0x223): In function `leer(int)':
/home/batousay/AVI/Concurso/Estable14/Grafo_C.cc:46: undefined reference to `sem _init'
/tmp/ccBQsxNV.o(.text+0x23f):/home/batousay/AVI/Concurso/Estable14/Grafo_C.cc:47 : undefined reference to `sem_init'
/tmp/ccBQsxNV.o(.text+0x277):/home/batousay/AVI/Concurso/Estable14/Grafo_C.cc:53 : undefined reference to `sem_wait'
/tmp/ccBQsxNV.o(.text+0x2c4):/home/batousay/AVI/Concurso/Estable14/Grafo_C.cc:68 : undefined reference to `sem_post'
/tmp/ccBQsxNV.o(.text+0x2d0):/home/batousay/AVI/Concurso/Estable14/Grafo_C.cc:69 : undefined reference to `sem_wait'
/tmp/ccBQsxNV.o(.text+0x363):/home/batousay/AVI/Concurso/Estable14/Grafo_C.cc:91 : undefined reference to `sem_post'
/tmp/ccBQsxNV.o(.text+0x36f):/home/batousay/AVI/Concurso/Estable14/Grafo_C.cc:92 : undefined reference to `sem_wait'
/tmp/ccBQsxNV.o(.text+0x412):/home/batousay/AVI/Concurso/Estable14/Grafo_C.cc:11 6: undefined reference to `sem_post'
/tmp/ccBQsxNV.o(.text+0x41e):/home/batousay/AVI/Concurso/Estable14/Grafo_C.cc:11 7: undefined reference to `sem_wait'
/tmp/ccBQsxNV.o(.text+0x4b1):/home/batousay/AVI/Concurso/Estable14/Grafo_C.cc:14 1: undefined reference to `sem_post'
/tmp/ccBQsxNV.o(.text+0x4bd):/home/batousay/AVI/Concurso/Estable14/Grafo_C.cc:14 2: undefined reference to `sem_wait'
/tmp/ccBQsxNV.o(.text+0x550):/home/batousay/AVI/Concurso/Estable14/Grafo_C.cc:16 5: undefined reference to `sem_post'
/tmp/ccBQsxNV.o(.text+0x55c):/home/batousay/AVI/Concurso/Estable14/Grafo_C.cc:16 6: undefined reference to `sem_wait'
/tmp/ccBQsxNV.o(.text+0x67b): In function `hilo_leer(void*)':
/home/batousay/AVI/Concurso/Estable14/Grafo_C.cc:199: undefined reference to `sem_wait'
/tmp/ccBQsxNV.o(.text+0x6c4):/home/batousay/AVI/Concurso/Estable14/Grafo_C.cc:20 2: undefined reference to `sem_post'
/tmp/ccBQsxNV.o(.text+0x6e2):/home/batousay/AVI/Concurso/Estable14/Grafo_C.cc:20 5: undefined reference to `sem_wait'
collect2: ld devolvió el estado de salida 1

Bien, parece ser que no encuentra las funciones, ¿no? pero el semaphores.h lo tengo incluido en Grafo_C.h (vamos el fichero de cabecera de este .cc XD)


¿alguien tiene alguna idea de porqué me pasa esto?
¿alguna sugerencia?


Gracias por la ayuda!!
El error es de enlazado, no de compilación. Te falta enlazar con alguna librería.

- ferdy
Hay que linkar con las librerías de hilos. No me acuerdo de como era pero lo encontrarás en google.

Vamos te falta el -l

Edito: Ferdy me ha ganado pero solo pero segundo [fumando] [fumando] [fumando]
Si, para GCC creo ke es -lpthread
La os*** Pu**.. si sq estoy gilipollas...

-lpthread

Si llevo 2 semanas compilando con ese flag.. U.U y va ahora y se me olvida.
Ese era mi error.

¡Muchas gracias a los dos!
¿ Os enseñan C++ y no os enseñan a usar un Makefile ? Curioso sistema...

- ferdy
Hombre no seamos malos, aun estara haciendo pruebas y no ha hecho el Makefile aun ........




Salu2
¬_¬ ¬_¬

Se usar un Makefile (medianamente bien, no soy ningun experto tampoco), la proxima vez especificaré que llevo 2 semanas compilando con -lpthread en clase, pero que justamente hoy, en esta precisa tarde en el continuo espacio-tiempo de mi casa se me ha olvidado poner el flag.

[bye]
7 respuestas