【问题标题】:Building the library for check test C framework构建用于检查测试 C 框架的库
【发布时间】:2012-03-15 09:08:02
【问题描述】:

我开始使用 check 框架来测试 C 应用程序。 为了更好地理解,我浏览了检查包中的示例。它工作正常,但我不需要 automake 工具 - 我想用我自己的 Makefile 编译它(因为我想正确理解检查,我需要将我的最终应用程序用作操作系统的包)。也许我可以在那里使用自动生成的 Makefile,但现在,这将是我必须学习的下一件新东西,而且我准备单元测试的时间有限。 (那我当然要学习了解生成Makfile的工具,使用configure等)

使用我的 Makefile 构建应用程序时出现问题,我没有为检查功能链接对象:

/tmp/ccm7cniy.o: In function `test_money_create':
check_money.c:(.text+0x1e): undefined reference to `tcase_fn_start'
check_money.c:(.text+0x79): undefined reference to `_fail_unless'
check_money.c:(.text+0xcc): undefined reference to `_fail_unless'

我发现,在示例应用程序中是带有 obj 的 gcc。文件check_money-check_money.o,由gcc创建:

gcc -DHAVE_CONFIG_H -I. -I..     -g -O2 -MT check_money-check_money.o -MD -MP -MF .deps/check_money-check_money.Tpo -c -o check_money-check_money.o `test -f'check_money.c' || echo './'`check_money.c

这是我的问题:它使用依赖项check_money-check_money.Tpo。这个文件是由命令./configure 生成的,我不使用它。

如何创建自己的.o 文件以检查是否成功构建?有必要为每个应用程序创建此文件吗?不可能是一个,在共享库的某个地方?

(如果我的问题是“愚蠢的”,我很抱歉,我在 linux 中构建应用程序的经验还很少)

【问题讨论】:

  • 你安装了检查框架吗?如果你有,你可以尝试使用pkg-configgcc check_money.c `pkg-config --cflags --libs check`
  • gcc 选项-MF bla.Tpo 包含构建依赖项see here -M。因此,如果您手动正确指定所有库和依赖项,则不需要。从错误来看,您没有链接与检查库。 Tr another.anon.coward 的 pkg 命令。这通常会返回必要的包含路径和库。
  • @another.anon.coward - 谢谢! - 它解决了这个问题
  • @another.anon.coward - 请你把你的答案写成答案,这样我就可以把它标记为正确,这个问题不会没有正确答案。 (或者我应该自己写答案?)谢谢

标签: c makefile check-framework


【解决方案1】:

添加评论作为回复:
请检查您是否安装了check 框架。如果是这样,您可以尝试使用pkg-configsay

gcc check_money.c `pkg-config --cflags --libs check`

这里pkg-config 实用程序将读取.pc 文件(在check 框架的情况下恰好是check.pc,因此命令中的最后一个条目是check)并添加必要的编译器标志( --cflags 选项)和库/链接器选项(--libs 选项)

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    相关资源
    最近更新 更多