Linux中未定义的对p线程_CREATE的引用

Linux中未定义的对p线程_CREATE的引用

我从网上获得了下面的演示https:/Computing.llnl.gov/tutorials/p线程/

#include <pthread.h>#include <stdio.h>#define NUM_THREADS     5void *PrintHello(void *threadid){
   long tid;
   tid = (long)threadid;
   printf("Hello World! It's me, thread #%ld!\n", tid);
   pthread_exit(NULL);}int main (int argc, char *argv[]){
   pthread_t threads[NUM_THREADS];
   int rc;
   long t;
   for(t=0; t<NUM_THREADS; t++){
      printf("In main: creating thread %ld\n", t);
      rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t);
      if (rc){
         printf("ERROR; return code from pthread_create() is %d\n", rc);
         exit(-1);
      }
   }
   pthread_exit(NULL);}

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

corey@ubuntu:~/demo$ gcc -o term term.c
term.c: In function ‘main’:term.c:23: warning: incompatible implicit declaration of built-in function ‘exit’/tmp/cc8BMzwx.o:
 In function `main':term.c:(.text+0x82): undefined reference to `pthread_create'collect2: ld returned 1 exit status

这对我来说没有任何意义,因为标题包括pthread.h,它应该有pthread_create功能。有什么问题吗?


白衣非少年
浏览 738回答 3
3回答

萧十郎

到目前为止,这两个问题的答案都是不正确.对于Linux,正确的命令是:gcc&nbsp;-pthread&nbsp;-o&nbsp;term&nbsp;term.c一般来说,库应该遵循命令行中的源和对象,并且-lpthread不是“选项”,而是一个库规范。在一个只有libpthread.a安装,gcc&nbsp;-lpthread&nbsp;...将无法连接。

汪汪一只猫

属性->c/c+构建->设置->GCC C+链接器->顶部添加“p线程”库

MMTTMM

从Linux终端运行,对我起作用的是使用以下命令进行编译(假设我要编译的c文件称为test.c):gcc&nbsp;-o&nbsp;test&nbsp;test.c&nbsp;-pthread希望它能帮到别人!
打开App,查看更多内容
随时随地看视频慕课网APP