Linux下"undefined reference to ‘pthread_create’"问题解决
来源:互联网 发布:厦门千象品牌策划 知乎 编辑:程序博客网 时间:2024/06/04 19:22
实验环境
Centos 7.0, gcc 4.8.5
问题
在运行一个多线程的c文件时候报了错:
#include <stdio.h>#include <stdlib.h>#include <pthread.h>#include <semaphore.h>pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;pthread_cond_t cond=PTHREAD_COND_INITIALIZER;void* thread1(void*);void* thread2(void*);void* thread3(void*);int i=1;int buffer1[1];//char buffer1[4];int buffer2[1];sem_t sample_sem;int main(void){ pthread_t t1; pthread_t t2; pthread_t t3; pthread_create(&t1,NULL,(void*)thread1,NULL); pthread_create(&t2,NULL,(void*)thread2,NULL); pthread_create(&t3,NULL,(void*)thread3,NULL); pthread_join(t1,NULL); pthread_join(t2,NULL); pthread_join(t3,NULL); pthread_mutex_destroy(&mutex); pthread_cond_destroy(&cond); exit(0);}void* thread1(void* arg){ FILE *f1; if((f1=(fopen("1.dat","r"))) == NULL){ printf("Open 1.dat failed."); } for(i=1;i<=27;i++) { pthread_mutex_lock(&mutex); if ((i%2==0) || (i%3==0)){ pthread_cond_signal(&cond); } else{ printf("thread1's i : %d\n",i); fscanf(f1,"%d",buffer1);//fread(buffer1,2,1,f1); printf("thread1 write: %d\n", buffer1[0]); } pthread_mutex_unlock(&mutex); sleep(1); } fclose(f1);}void* thread2(void* arg){ FILE *f2; if((f2=(fopen("2.dat","r"))) == NULL){ printf("Open 2.dat failed."); } while(i<=27){ sem_post(&sample_sem); pthread_mutex_lock(&mutex); if (i%2!=0){ pthread_cond_wait(&cond,&mutex); } printf("thread2's i : %d\n",i); fscanf(f2,"%d",buffer2);//fread(buffer1,2,1,f1); printf("thread2 write: %d\n", buffer2[0]); pthread_mutex_unlock(&mutex); sleep(1); } fclose(f2);}void* thread3(void* arg){ while(i<=27) { sem_wait(&sample_sem); pthread_mutex_lock(&mutex); if (i%3!=0){ pthread_cond_wait(&cond,&mutex); } printf("thread3's i:%d\n",i); printf("PLUS: %d + %d = %d\n",buffer1[0],buffer2[0],buffer1[0]+buffer2[0]); printf("MULTIPLY: %d * %d = %d\n",buffer1[0],buffer2[0],buffer1[0]*buffer2[0]); //printf("get B1: %d,",buffer1[0]); //printf("get B2: %d\n",buffer2[0]); pthread_mutex_unlock(&mutex); sleep(1); }}
PS:这个代码有问题- -运行完了退不出来。。。好迷啊
原因
pthread不是Linux下的默认的库,也就是在链接的时候,无法找到phread库中函数的入口地址,于是链接会失败。
解决
在gcc编译的时候,附加要加 -lpthread参数即可解决。
1 0
- Linux下undefined reference to ‘pthread_create’问题解决
- Linux下undefined reference to ‘pthread_create’问题解决
- Linux下undefined reference to ‘pthread_create’问题解决
- Linux下undefined reference to ‘pthread_create’问题解决
- Linux下undefined reference to ‘pthread_create’问题解决
- Linux下undefined reference to ‘pthread_create’问题解决
- Linux下undefined reference to ‘pthread_create’问题解决
- Linux下"undefined reference to ‘pthread_create’"问题解决
- Linux下undefined reference to ‘pthread_create’问题解决
- Linux下undefined reference to ‘pthread_create’问题解决
- Linux下undefined reference to ‘pthread_create’问题解决
- linux undefined reference to 'pthread_create'问题解决
- undefined reference to 'pthread_create'问题解决
- undefined reference to 'pthread_create'问题解决
- undefined reference to 'pthread_create'问题解决
- undefined reference to 'pthread_create'问题解决
- undefined reference to 'pthread_create'问题解决
- undefined reference to 'pthread_create'问题解决
- 纹理采样和过滤
- 第七届 山东省ACM Swiss-system tournament(归并思想)
- LintCode-二叉树的所有路径
- opengl 绘图模式比较
- sqoop 知识及安装配置说明--hadoop安装系列之四
- Linux下"undefined reference to ‘pthread_create’"问题解决
- 使用fbo离屏渲染绘制图片
- 数字组合
- c++ 指针详解
- HDU
- static对程序运行影响
- CSipsimple编译
- Spring Boot学习总结(7)——SpringBoot之于Spring优势
- 回归