2012-03-29 23 views
0

我必须做一个程序使用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); 
    } 

回答

2

您可以尝试使用-pthread选项进行编译,该选项告诉gcc与pthread库进行链接。

+2

你的意思'-lpthread'? – 2012-03-29 06:03:39

+1

@Pavan,nope,'-pthread'处理那个(并且更加便携):http://stackoverflow.com/questions/2127797/gcc-significance-of-pthread-flag-when-compiling – huon 2012-03-29 06:06:04

+1

不错。谢谢:) – 2012-03-29 06:09:34

1

尝试:
-pthread的gcc -o测试test.c的