4

即使我已经-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
4

2 回答 2

5

注意 -lrt 应该在末尾而不是在中间。

于 2018-01-27T14:51:45.183 回答
4

你的makefile是错误的

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

allget1和的先决条件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
于 2013-10-17T10:22:49.990 回答