我有这段代码:
#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库,我无法弄清楚这个错误的原因。
答案 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
享受:)