2012-03-29 87 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的