c check的安装和使用

c语言单元测试工具 check

安装很简单,

下载,解压

安装三部曲:configure,make,make install

安装完的库文件在/usr/local/lib下面


测试用例:

参考这个链接

http://blog.chinaunix.net/uid-20147410-id-85936.html

但其中makefile有问题的:

test_add.o: In function `test_add':
test_add.c:(.text+0x69): undefined reference to `_ck_assert_failed'
collect2: ld 返回 1


原因是,连接的时候找到的库目录不对。

更正的是:

makefile里面这一行:

gcc -I include $^ -o myprog -L/usr/local/lib/ -lcheck

这样链接的时候,找到正确的库位置,

然后再编译,运行,就可以了

[root@localhost utest]# ./myprog 
Running suite(s): Add
./myprog: symbol lookup error: ./myprog: undefined symbol: _ck_assert_failed
0%: Checks: 1, Failures: 0, Errors: 1
unit_test/test_add.c:4:E:add:test_add:0: (after this point) Early exit with return value 127


但是好像还有问题:

[root@localhost utest]# ldd myprog
linux-vdso.so.1 => (0x00007fffbb36a000)
libcheck.so.0 => /usr/lib64/libcheck.so.0 (0x00007f50092d7000)
libc.so.6 => /lib64/libc.so.6 (0x0000003440800000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003441000000)
/lib64/ld-linux-x86-64.so.2 (0x0000003440000000)

看了一下,原来/usr/lib64下面的libcheck里面真的没有这个符号

所以,从/usr/local/lib下面,把正确的文件拷贝过去,然后再运行


[root@localhost utest]# ll /usr/lib64/libcheck.so*
lrwxrwxrwx. 1 root root    17 3月   9 2015 /usr/lib64/libcheck.so -> libcheck.so.0.0.0
lrwxrwxrwx. 1 root root    17 3月   9 2015 /usr/lib64/libcheck.so.0 -> libcheck.so.0.0.0
-rwxr-xr-x. 1 root root 29440 11月 11 2010 /usr/lib64/libcheck.so.0.0.0
[root@localhost utest]# objdump -t /usr/lib64/libcheck.so|grep _ck_assert_failed
[root@localhost utest]# cp /usr/local/lib/libcheck.so.0.0.0 /usr/lib64/libcheck.so.0.0.0 

[root@localhost utest]# ./myprog 


Running suite(s): Add
0%: Checks: 1, Failures: 1, Errors: 0
unit_test/test_add.c:6:F:add:test_add:0: god, 2+3!=5

猜你喜欢

转载自blog.csdn.net/sjx1989/article/details/49891487