为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

白衣非少年 2019-07-04 12:56:37
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功能。有什么问题吗?
查看完整描述

3 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

到目前为止,这两个问题的答案都是不正确.
对于Linux,正确的命令是:

gcc -pthread -o term term.c

一般来说,库应该遵循命令行中的源和对象,并且-lpthread不是“选项”,而是一个库规范。在一个只有libpthread.a安装,

gcc -lpthread ...

将无法连接。


查看完整回答
反对 回复 2019-07-04
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

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


查看完整回答
反对 回复 2019-07-04
?
MMTTMM

TA贡献1869条经验 获得超4个赞

从Linux终端运行,对我起作用的是使用以下命令进行编译(假设我要编译的c文件称为test.c):

gcc -o test test.c -pthread

希望它能帮到别人!


查看完整回答
反对 回复 2019-07-04
  • 3 回答
  • 0 关注
  • 735 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信