即使我在我的Makefile中链接了-lrt
,如下面所示,我仍然会收到undefined reference to '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
all
具有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