在Linux中对pthread_create的未定义引用

我从网上下载了下面的演示https://computing.llnl.gov/tutorials/pthreads/

#包括<pthread.h>
#包括<标准h>
#定义NUM_线程5
void*PrintHello(void*threadid)
{
长tid;
tid=(长)线程ID;
printf(“你好,世界!是我,线程#%ld!\n”,tid);
pthread_exit(NULL);
}
int main(int argc,char*argv[])
{
pthread_t threads[NUM_threads];
int rc;
长t;
对于(t=0;t<NUM_线程;t++){
printf(“主:创建线程%ld\n”,t);
rc=pthread_create(&threads[t],NULL,PrintHello,(void*)t);
if(rc){
printf(“错误;pthread_create()返回的代码是%d\n”,rc);
出口(-1);
}
}
pthread_exit(NULL);
}

但是当我在我的机器上编译它(运行Ubuntu Linux 9.04)时,我得到以下错误:

[email protected]:~/demo$gcc-o term.c
术语c:在函数“main”中:
term.c:23:警告:内置函数“exit”的不兼容隐式声明
/tmp/cc8BMzwx.o:在函数“main”中:
term.c:(.text+0x82):对“pthread_create”的未定义引用
collect2:ld返回了1个退出状态

这对我来说没有任何意义,因为标题包括pthread.h,它应该具有pthread\u create函数。你知道怎么回事吗

对于Linux,正确的命令是:

gcc-pthread-o term.c

通常,库应该遵循命令行上的源和对象,并且-lpthread不是;选择权;,这是一个库规范。在仅安装了libpthread.a的系统上

gcc-lpthread。。。

将无法链接

发表评论