【ERROR】collect2: error: ld returned 1 exit status;undefined reference to `mq_open‘

问题描述

今天在做用消息队列实现进程间通信的案例时,明明已经在包含了头文件"mqueue.h",但是却在编译阶段报了一个找不到库函数的小错误。如下:
producer.c:(.text+0x8c): undefined reference to `mq_open'
/usr/bin/ld: producer.c:(.text+0x155): undefined reference to `mq_timedsend'
/usr/bin/ld: producer.c:(.text+0x19b): undefined reference to `mq_timedsend'
collect2: error: ld returned 1 exit status

解决方案:

在编译命令后面链接上librt实施扩展库

gcc -o producer producer.c -lrt

添加"-lrt"参数是因为"mqueue.h"中的函数(例如"mq_open"、"mq_timedsend"、"mq_timedreceive"等函数)是POSIX实时扩展库(librt)的一部分,POSIX实时扩展库提供了实时功能的支持,这些支持在标准的C库中不存在,因此在编译的时候需要显式链接该库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值