我开始使用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 中构建应用程序的经验还很少)
最佳答案
添加评论作为回应:
请检查您是否安装了check
框架。如果是这样,您可以尝试使用 pkg-config
说
gcc check_money.c `pkg-config --cflags --libs check`
此处 pkg-config
实用程序将读取 .pc
文件(在 check 的情况下恰好是
框架,因此命令中的最后一个条目是 check.pc
check
) 并添加必要的编译器标志(--cflags
选项)和库/链接器选项(--libs
选项)
希望这对您有所帮助!
关于c - 为检查测试 C 框架构建库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9716704/