【问题标题】:Configuring ceedling with mqueue.h and -lrt使用 mqueue.h 和 -lrt 配置 ceedling
【发布时间】:2017-02-09 11:19:05
【问题描述】:

我正在使用 Throw The Switch's Ceedling/Unity/CMock 组合作为单元测试框架为 C 语言项目编写单元测试。

我遇到了一个有趣的困境,我在其中一个单元测试中使用了mqueue.h。当测试编译时,我得到mq_open()mq_close() 等的 gcc 链接器未定义引用错误。

据我了解,based on this finding -lrt 标志需要放在 gcc 命令的末尾——在列出源代码(和可执行文件?)gcc test_foo.c -lrt 之后。不幸的是,ceedling 被写在命令后面加上标志:gcc -lrt test_foo.c,我找不到改变顺序的方法。

Ceedling 提供的文档仅涉及如何向 gcc 命令添加标志,而不是如何更改顺序。我试过在 Ceedling 的大量源代码中四处寻找,但它是用我不熟悉的 Ruby 编写的。

所以我的问题是:

  1. 放置 -lrt 是否真的影响 mq_*() 的链接
  2. 对如何更改 -lrt 标志的位置有何想法?

【问题讨论】:

    标签: c ruby unit-testing gcc mqueue


    【解决方案1】:

    差不多 3 年后有类似的问题。他们已经在https://github.com/ThrowTheSwitch/Ceedling/issues/136 中添加了这个功能,但是从文档中仍然不容易理解用法。我需要包含数学库(在命令末尾需要'-lm'标志)并最终得到以下配置部分(特别是 system 部分):

    :libraries:
        :placement: :end
            :flag: "${1} "  # or "-L ${1}" for example
            :common: &common_libraries []
        :system:
             - -lm
        :test:
            - *common_libraries
        :release:
            - *common_libraries
    

    由于某种原因,ceedling 在添加到公共或特定构建部分时根本没有添加标志。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-16
      • 2010-12-03
      相关资源
      最近更新 更多