其他分享
首页 > 其他分享> > 消息队列生成文件错误:未定义对“ mq_open”的引用

消息队列生成文件错误:未定义对“ mq_open”的引用

作者:互联网

即使我在我的Makefile中链接了-lrt,如下所示,我仍然得到对’mq_open’的未定义引用.请帮忙!

all:get1 iserv1
get: get1.c
    gcc -Wall -o get1 get1.c -lrt
iserv: iserv1.c
    gcc -Wall -o iserv1 iserv1.c -lrt
clean:
    rm -fr *~ get1 iserv1

解决方法:

您的makefile错误

all:get1 iserv1
get: get1.c
    gcc -Wall -o get1 get1.c -lrt

都具有get1和iserv1的先决条件.但是您创建了一个get目标和一个iserv目标.所以例如将使用默认的make规则编译get1,该规则不包含-lrt(如果您查看实际执行的gcc命令,则应显示该规则.)

您的makefile应该像这样:

all:get1 iserv1
get1: get1.c
    gcc -Wall -o get1 get1.c -lrt
iserv1: iserv1.c
    gcc -Wall -o iserv1 iserv1.c -lrt
clean:
    rm -fr *~ get1 iserv1

标签:makefile,message-queue,linux
来源: https://codeday.me/bug/20191122/2061266.html