如何解决已安装检查c,但未找到“ check.h”
我正在将Windows 10与wsl ubuntu 18.04结合使用,我试图从此处运行代码: https://www.ccs.neu.edu/home/skotthe/classes/cs5600/fall/2015/labs/intro-check-lab-code.tgz
我安装了gcc,makefile,并在ubuntu终端中签入。但是当我说$ make
时说:
gcc money.o check_money.o -lcheck -lm -lpthread -lrt -lgcov -coverage -o check_money_tests
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libcheck.a(check_log.o): In function `subunit_lfun':
(.text+0x5f4): undefined reference to `subunit_test_start'
(.text+0x6bf): undefined reference to `subunit_test_fail'
(.text+0x6d4): undefined reference to `subunit_test_pass'
(.text+0x6ef): undefined reference to `subunit_test_error'
collect2: error: ld returned 1 exit status
Makefile:23: recipe for target 'check_money_tests' Failed
make: *** [check_money_tests] Error 1
所以我打开check_money.c,它说找不到check.h
。我在这里想念什么?
解决方法
简单版本:您还应该链接-lsubunit
标志,即:
TST_LIBS = -lcheck -lm -lpthread -lrt -lsubunit
更好的是,所有标志都应取自check
的程序包配置,因为要求取决于check
库的构建方式(这就是pkg-config
的发明方式对于)。因此,您可以像这样对Makefile
进行改进,而不是对选项进行硬编码:
CFLAGS = -c -Wall $(shell pkg-config --cflags check)
TST_LIBS = $(shell pkg-config --libs check)
结果:
$ make
gcc -c -Wall -pthread -fprofile-arcs -ftest-coverage src/*.c
gcc -c -Wall -pthread -fprofile-arcs -ftest-coverage tests/*.c
gcc money.o check_money.o -lcheck_pic -pthread -lrt -lm -lsubunit -lgcov -coverage -o check_money_tests
...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。