2012-03-15 53 views
4

我开始使用检查用于测试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应用程序还小经验)

+2

你安装了检查框架吗?如果你有,你可以尝试使用'pkg-config'说'gcc check_money.c \'pkg-config --cflags --libs检查'' – 2012-03-15 09:20:32

+0

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

+0

@ another.anon.coward - 谢谢! - 它解决了这个问题 – srnka 2012-03-15 10:08:41

回答

7

添加评论的回应:
请检查您是否已经安装了check框架。如果是的话,你可以尝试使用pkg-config

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

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

希望这有助于!