对pthread_create的未定义引用

时间:2012-03-21 10:55:10

标签: c pthreads

我有这段代码:

#include <stdio.h>
#include <pthread.h>

void* cuoco(void* arg)
{
    fprintf(stderr,"Inizio codice cuoco\n");
    fprintf(stderr,"Fine codice cuoco\n");
    return NULL;
}

void* cameriere(void* arg)
{
    fprintf(stderr,"Inizio codice cameriere\n");
    fprintf(stderr,"Fine codice cameriere\n");
    return NULL;
}

void* cliente(void* arg)
{
    fprintf(stderr,"Inizio codice cliente\n");
    fprintf(stderr,"Fine codice cliente\n");
    return NULL;
}

int main(int argc, char* argv[])
{
    void* (*routine)(void*);
    routine=cuoco;
    pthread_t thread_cuoco,thread_cameriere,thread_cliente;
    pthread_create(&thread_cuoco,NULL,routine,NULL);
    return 0;
}

在编译器选项中,我插入 -lpthread
但它说:
“对pthread_create的未定义引用”
我使用的是ubuntu 10.10,所以我已经安装了pthread库,我无法弄清楚这个错误的原因。

5 个答案:

答案 0 :(得分:29)

使用-lpthread作为最后一个编译器标志。

例如: gcc -o sample sample.c -lpthread

答案 1 :(得分:13)

如果没有看到编译器命令,我怀疑-lpthread没有结束。库需要放在编译器命令的末尾:

  

gcc main.c -lpthread

但是,请使用-pthread代替-lpthread,因为-pthread可能会添加其他设置(例如定义宏_REENTRANT)。

答案 2 :(得分:4)

使用以下命令:

gcc -pthread -o main main.c

答案 3 :(得分:0)

在Eclipse中,您应该添加字符串pthread。

Project -> Properties -> C/C++ Build -> Settings -> Tool Settings -> GCC Linker -> Libraries -> Libraries (-l) -> Add -> pthread

在此之后,您可以构建项目。

答案 4 :(得分:-2)

找到解决方案的人:D 只需转到settings >> compiler >> linker tab >>add lib

转到驱动器并转到lib文件夹并找到x86_64_linux_gnu并找到pthread 享受:)