我开始使用检查框架来测试C应用程序。 为了更好地理解,我在check包中查看了示例。它工作正常,但我不需要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中构建应用程序的经验很少)
答案 0 :(得分:7)
添加评论作为回复:
请检查您是否安装了check
框架。如果是这样,您可以尝试使用pkg-config
说
gcc check_money.c `pkg-config --cflags --libs check`
此处pkg-config
实用程序将读取.pc
文件(在check.pc
框架的情况下恰好为check
,因此命令中的最后一个条目为{{1} }}&添加必要的编译器标志(check
选项)&库/链接器选项(--cflags
选项)
希望这有帮助!