gpt4 book ai didi

使用 mqueue.h 和 -lrt 配置 ceedling

转载 作者:太空宇宙 更新时间:2023-11-04 04:27:49 26 4
gpt4 key购买 nike

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

在我的一个单元测试中使用 mqueue.h 时,我遇到了一个有趣的难题。当测试编译时,我得到了 mq_open()mq_close() 等的 gcc 链接器 undefined reference 错误。

据我了解,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 标志的位置有任何想法吗?

最佳答案

将近 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 在添加到公共(public)区域或特定构建部分时根本没有添加标志。

关于使用 mqueue.h 和 -lrt 配置 ceedling,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39798968/

26 4 0
文章推荐: linux - 如何使用公钥在 Ubuntu 中使用 openssl 加密 XML 文件?
文章推荐: jquery - 表定位不起作用
文章推荐: C - 按字母顺序将新节点插入链表
文章推荐: html - 如何更改