linux下编译c代码时error:undefined reference to sem_init sem_wait 解决方法之一

最近写生产者消费者的代码遇到如下问题:

当我在终端输入如下:
gcc -o consumer.out consumer.c

就会出现下面的错误:
consumer.c:(.text+0xc9): undefined reference to `sem_post'
/tmp/ccvFyPLL.o: In function `consumer':
consumer.c:(.text+0x108): undefined reference to `sem_wait'
consumer.c:(.text+0x1c6): undefined reference to `sem_post'
/tmp/ccvFyPLL.o: In function `main':
consumer.c:(.text+0x1fe): undefined reference to `sem_init'
consumer.c:(.text+0x21a): undefined reference to `sem_init'
consumer.c:(.text+0x23f): undefined reference to `pthread_create'
consumer.c:(.text+0x264): undefined reference to `pthread_create'
consumer.c:(.text+0x278): undefined reference to `pthread_join'
consumer.c:(.text+0x28c): undefined reference to `pthread_join'


这个是因为pthread并非Linux系统的默认库,编译时注意加上-lpthread参数,以调用链接库

我们再一次在终端输入:gcc -o consumer.out consumer.c -lpthread

此时编译正确

执行:在终端输入:./consumer.out 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值