compile producer-consumer

本文记录了解决Linux环境下pthread相关程序编译时遇到的错误过程,包括使用正确的编译参数、解决函数未定义引用问题及添加数学库支持等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编译环境是red hat

程序是UNPIPC中prodcons2,自己直接改了下,去掉unpipc.h,加上pthread.h.但仍有些错误:

undefined reference to pthread_create...

undefined reference to set_concurrency

undefined min

针对第一问题,想起昨天编译就是因为系统不支持,网上搜索的结果选择加编译参数为:

gcc -pthread prodcons2 .c -o prodcons2

第二个问题破费周折,看到网上不停有人问:是pthread_setconcurrency吗?于是把函数名改成这个,OK.

第三个问题开始直接加上 maths.h,报错,汗!自己对LINUX太无知,对那些库里面究竟有什么似乎从没清楚过,ZRL帮忙才知道原来直接到/usr/include里面看就可以,原来是math.h,但仍不成功,打开math.h发现不能/min,于是直接在程序后头加了个min函数。

OK,所有的问题总算搞定了。

运行发现结果竟然是count[0]=2, 自己设置的nitem,有些奇怪,如果加上set_concurrency那么应该所有的线程都有机会。恩,继续运行,果然,底数是变化的。应该算对了吧,可是为啥总是都等于2其余却全为0呢...

还有一个小插曲,ZRLchange directory to /usr/include后直接编译,报错 。。。no input file,还以为我又敲错了。原来就是因为编译目录不对!以前就遇到过这种问题,以后切记!  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值