我开始使用检查用于测试C应用程序的框架。 为了更好地理解,我在检查包中查看了示例。它工作正常,但我不需要automake工具 - 我想通过我自己的Makefile编译它(因为我想正确理解检查,并且需要将我的最终应用程序作为OS的一个包使用)。也许我可以在那里使用自动生成的Makefile,但现在,这将是下一个我必须学习的新事物,并且我限制了准备单元测试的时间。 (当然,我想研究和理解生成Makfile的工具,使用configure等)构建用于检查测试的C库框架
在使用我的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-config'说'gcc check_money.c \'pkg-config --cflags --libs检查'' – 2012-03-15 09:20:32
gcc选项'-MF bla.Tpo'包含了构建依赖关系, [见这里-M](http://gcc.gnu.org/onlinedocs/gcc-4.6.3/gcc/Preprocessor-Options.html#Preprocessor-Options)。所以,如果你正确地指定所有的库和依赖关系,你不需要这些。从错误判断,你不链接与检查库。 Tr another.anon.coward的pkg命令。这通常返回必要的包含路径和库。 – Bort 2012-03-15 09:49:11
@ another.anon.coward - 谢谢! - 它解决了这个问题 – srnka 2012-03-15 10:08:41