C编译"未定义引用"?

时间:2017-03-26 11:05:15

标签: c linux

我有这样的C代码:

#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int sumofinpoint=0;
int numofpoint=0;
void *montecarlo(int number)
{
    srand((unsigned int)time(NULL));
    float a = 2.0;
    int i=0;
    for (i=0;i<(int)number;i++){
        float x,y;
        x=((float)rand()/(float)(RAND_MAX)) * a -1;
        y=((float)rand()/(float)(RAND_MAX)) * a -1;
        numofpoint++;
        if((x*x + y*y) <= 1){
            sumofinpoint=sumofinpoint+1;
        }
    }
}
int main(){
    pthread_t tid[15];
    float pi;
    int number = 100000000;
    int i=0;
    for(i = 0; i<15;i++){
        pthread_create(&tid[i], NULL, montecarlo, (int)(number/15));
        pthread_join(tid[i],NULL);
    }
    pi = 4*(float)sumofinpoint/(float)number;
    printf("So pi la: %f",pi);
    return 0;
}

我在Linux中编译它,但它说我有#34;未定义的引用pthread_create&#34;和&#34;对pthread_join&#34;的未定义引用。但是当我在Window中编译DevC ++时,它运行得非常好。我哪里错了?

1 个答案:

答案 0 :(得分:1)

-lpthread转到gcc(假设您正在使用gcc)。