线程编译问题(undefined reference to `pthread

#include <stdio.h>#include <pthread.h>#include <stdlib.h>voidprintids(const char *s){pid_t pid;pthread_t tid;pid = getpid();tid = pthread_self();printf("%s pid = [%u] tid = [%u] [0x%x]\n",s, (unsigned int)pid, (unsigned int)tid, (unsigned int)tid);}void *thr_fn(void *arg){printids("new thread:");return ((void *)0);}intmain(){pthread_t ntid;int err;err = pthread_create(&ntid, NULL, thr_fn, NULL);if(err != 0)printf("不能创建线程[%s]\n",strerror(err));printids("main thread:");sleep(3);exit(0);}

[root@localhost pthread]# gcc test.c -o test

/tmp/ccq2Mbxs.o: In function `main’:test.c:(.text+0x89): undefined reference to `pthread_create’collect2: ld 返回 1[root@localhost pthread]#问题原因: pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a,所以在使用pthread_create()创建线程,以及调用 pthread_atfork()函数建立fork处理程序时,需要链接该库。

问题解决: 在编译中要加 -lpthread参数 gcc test.c -otest -lpthread

版权声明:本文为博主原创文章,未经博主允许不得转载。

,却还是,会愚蠢的选择相互敌视的方式。即使背脊相抵,

线程编译问题(undefined reference to `pthread

相关文章:

你感兴趣的文章:

标签云: