即使我已经-lrt
在我的 Makefile 中进行了链接,如下所示,我仍然得到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
即使我已经-lrt
在我的 Makefile 中进行了链接,如下所示,我仍然得到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
注意 -lrt 应该在末尾而不是在中间。
你的makefile是错误的
all:get1 iserv1
get: get1.c
gcc -Wall -o get1 get1.c -lrt
all
有get1
和的先决条件iserv1
。但是您创建了一个get
目标和一个iserv
目标。因此,例如 get1 将使用不包括 -lrt 的默认 make 规则进行编译(如果您查看实际执行的 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