线程异常:undefined reference to 'pthread_create' 处理

源码:

#include <stdio.h>
#include <pthread.h>
#include <sched.h>

void *producter_f (void *arg);
void *consumer_f (void *arg);

int buffer_has_item=0;
pthread_mutex_t mutex;

int running =1 ;

int main (void)
{
pthread_t consumer_t;
pthread_t producter_t;

pthread_mutex_init (&mutex,NULL);

pthread_create(&producter_t, NULL,(void*)producter_f, NULL );
pthread_create(&consumer_t, NULL, (void *)consumer_f, NULL);
usleep(1);
running =0;
pthread_join(consumer_t,NULL);
pthread_join(producter_t,NULL);
pthread_mutex_destroy(&mutex);

return 0;
}

void *producter_f (void *arg)
{
while(running)
{
pthread_mutex_lock (&mutex);
buffer_has_item++;
printf("生产,总数量:%d\n",buffer_has_item);
pthread_mutex_unlock(&mutex);
}
}

void *consumer_f(void *arg)
{
while(running)
{
pthread_mutex_lock(&mutex);
buffer_has_item--;

printf("消费,总数量:%d\n",buffer_has_item);
pthread_mutex_unlock(&mutex);
}
}

错误场景:

[root@luozhonghua 04]# gcc -o mutex ex04-5-mutex.c

/tmp/ccZuFiqr.o: In function `main':
ex04-5-mutex.c:(.text+0x3d): undefined reference to `pthread_create'
ex04-5-mutex.c:(.text+0x61): undefined reference to `pthread_create'
ex04-5-mutex.c:(.text+0x8b): undefined reference to `pthread_join'
ex04-5-mutex.c:(.text+0x9f): undefined reference to `pthread_join'

collect2: ld returned 1 exit status

分析:pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a

处理:

在编译中加 -lpthread 参数
[root@luozhonghua 04]# gcc -lpthread -o mutex ex04-5-mutex.c

时间: 2024-10-02 12:49:28

线程异常:undefined reference to &#39;pthread_create&#39; 处理的相关文章

wpa_supplicant编译时出现 undefined reference to `sha256_vector&amp;amp;#39;

问题描述 wpa_supplicant编译时出现 undefined reference to `sha256_vector' CC ../src/drivers/drivers.c CC ../src/l2_packet/l2_packet_linux.c ../src/wps/wps_common.o: In function wps_derive_keys': /home/atheros/Atheros-P2P/wpa_supplicant-2.1/wpa_supplicant/../sr

gcc编译出现了undefined reference to `exp&amp;amp;#39;

问题描述 gcc编译出现了undefined reference to `exp' 在Ubuntu下编译word.cgcc -lm -pthread word.c -o word还是出现了undefined reference to `exp',后来有gcc -pthread word.c -o word /usr/lib/libm.a则提示没有/usr/lib/libm.a这个文件, 有没有有经验的大侠有解决办法? 解决方案 首先确定有libm.so,虽然一般是肯定有的,locate libm

linux 程序开发-/usr/lib/libnssutil3.so: undefined reference to `PL_ClearArenaPool&amp;amp;#39;

问题描述 /usr/lib/libnssutil3.so: undefined reference to `PL_ClearArenaPool' 我在一个64位的linux系统下编译32位的程序,因此很多库文件都是自己安装的.我在编译代码的时候遇到了/usr/lib/libnssutil3.so: undefined reference to `PL_ClearArenaPool'这个报错.用nm查了这个库文件里没有定义这个符号.但是不知道这个问题应该怎么解决.求大神相助

对象-qt报错undefined reference to `vtable for btnStyle&amp;amp;#39;

问题描述 qt报错undefined reference to `vtable for btnStyle' 头文件中: //错误:undefined reference to `vtable for btnStyle' class btnStyle : public QProxyStyle { Q_OBJECT public: btnStyle(); }: 构造函数如下: //出错地方 一直报错什么问题呢,我只是对qt的例子稍微改了下,但是主体框架都没改 解决方案 问题 在一个类中添加了宏 Q_

gcc-g++ undefined reference to &amp;amp;#39;std::cin&amp;amp;#39;

问题描述 g++ undefined reference to 'std::cin' 用了g++,用了-lstdc++,直接写std::cin 都没有用 解决方案 试下初始化a,int a=0:不确定是否可行 解决方案二: 楼主不会是编译器或者stdc++库出了问题吧,建议楼主检查下 解决方案三: 此版本的Linux 系统为添加c++库,建议先下载库 解决方案四: 回复John_ToDebug: 我百度了,只找到了libstdc++.so,需要手动拷贝到lib,但是我在拷贝的时候说No such

linux 编译-大家好,加了-ldl还是出现`dlopen&amp;amp;#39; ‘dlsym’ undefined reference

问题描述 大家好,加了-ldl还是出现`dlopen' 'dlsym' undefined reference 32位centos6.5上交叉编译opencv,加了-ldl还是出现dlopen' 'dlsym' undefined reference 已经网上找了-ldl方法,还是不行 安装了跟glibc有关的一切东西,还是不行 困扰好久了,请大侠帮忙,不胜感激 详细错误信息如下: ../../lib/libopencv_ocl.so: undefined reference todlopen'

android libmp3lame-libmp3lame编译出现:undefined reference to &amp;amp;#39;hip_decode&amp;amp;#39;

问题描述 libmp3lame编译出现:undefined reference to 'hip_decode' 这是出问题的地方,这三个方法在mpglib_interface.c文件中 下面是Android.mk文件 下面是报错信息 这个错误怎么解决? 解决方案 解决了,妈蛋!需要在Android.mk文件中添加 LOCAL_ALLOW_UNDEFINED_SYMBOLS := true 这句话 解决方案二: 问题解决之: 使用NDK编译的时候出现 undefined reference to使

caffe: compile error : undefined reference to `cv::imread(cv::String const&amp;, int)&amp;#39; et al.

when I compile caffe file : .build_debug/lib/libcaffe.so: undefined reference to `cv::imread(cv::String const&, int)'.build_debug/lib/libcaffe.so: undefined reference to `cv::imencode(cv::String const&, cv::_InputArray const&, std::vector<u

libQt5Core.so: undefined reference to `dlclose@GLIBC_2.4&amp;#39;

/******************************************************************************** * libQt5Core.so: undefined reference to `dlclose@GLIBC_2.4' * 说明: * 在编译QT 5.8的程序的时遇到找不到库的问题. * * 2017-6-8 深圳 龙华樟坑村 曾剑锋 *************************************************