【问题标题】:message queue makefile error: undefined reference to `mq_open'消息队列生成文件错误:未定义对“mq_open”的引用
【发布时间】:2013-10-25 18:10:00
【问题描述】:

即使我在 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

【问题讨论】:

  • 你有哪个版本的glibc?

标签: linux makefile message-queue


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    你的 makefile 错误

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

    all 具有 get1iserv1 的先决条件。但是您创建了一个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
    

    【讨论】:

      猜你喜欢
      • 2020-02-20
      • 1970-01-01
      • 1970-01-01
      • 2014-07-24
      • 1970-01-01
      • 1970-01-01
      • 2015-09-01
      • 2018-06-10
      • 2020-05-31
      相关资源
      最近更新 更多