【发布时间】: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-config说gcc 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