即使我在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
答案 0 :(得分:3)
你的makefile错了
all:get1 iserv1
get: get1.c
gcc -Wall -o get1 get1.c -lrt
all
的先决条件为get1
和iserv1
。但您创建了get
目标和iserv
目标。所以例如get1将使用默认的make规则进行编译,该规则不包括-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
答案 1 :(得分:0)
注意-lrt应该不在中间。