我必須做一個程序使用POSIX線程使用gcc,當我嘗試編譯它,終端顯示一個消息,如:故障與使用線程用gcc POSIX程序
/tmp/ccw594wa.o:在功能main': POSIX.c:(.text+0xda): undefined reference to
在pthread_create ' POSIX.c :(文字+ 0x102):未定義的引用`在pthread_create' collect2:LDdevolvióEL斯卡德薩利達1
有人可以幫我找出錯誤原因??,程序必須實施生產者 - 消費者算法來完成一些任務,我的代碼(未完成)是下一個
#include "stdio.h"
#include "pthread.h"
#define p printf
#define s scanf
pthread_mutex_t exmut;
float suma=0;
float x;
int iteraciones;
void *h_productor (void *arg) /*Procedimiento del productor*/
{
}
void *h_consumidor (void *arg) /*Procedimiento del consumidor*/
{
}
main() /*Hilo principal*/
{
int error;
int *out, idp=1, idc=2;
pthread_t productor; /*Hilo que realiza el proc. del productor*/
pthread_t consumidor; /*Hilo que realiza el proc. del consumidor*/
p ("\n\n Cálculo de e^x, por medio de una serie infinita... =)!");
p ("\n\n x= ");
s ("%f",&x);
do
{
p (" No. de iteraciones: ");
s ("%d",&iteraciones);
if (iteraciones<1 || iteraciones>10)
p("\n Número no válido, debes introducir un valor de entre 1 y 10\n");
}
while (iteraciones<1 || iteraciones>10);
pthread_mutex_init (&exmut, NULL);
/*Creamos ambos hilos, tanto el productor como el consumidor*/
error = pthread_create (&productor,NULL,h_productor,&idp);
error = pthread_create (&consumidor,NULL,h_consumidor,&idc);
/*
/*Esperamos a que ambos hilos terminen/
error = pthread_join (h_productor,(void **)&out);
error = pthread_join (h_consumidor,(void **)&out);
*/
p ("\n La aproximación para %d iteraciones del valor de e^%f= %f",iteraciones,x,suma);
}
你的意思'-lpthread'? – 2012-03-29 06:03:39
@Pavan,nope,'-pthread'處理那個(並且更加便攜):http://stackoverflow.com/questions/2127797/gcc-significance-of-pthread-flag-when-compiling – huon 2012-03-29 06:06:04
不錯。謝謝:) – 2012-03-29 06:09:34