尝试使用 gcov 编译我们的代码以实现代码覆盖,出现以下错误:
解决问题:
编译的时候添加 -fprofile-arcs -ftest-coverage编译
链接的时候添加gcov库的链接
遇到libgcov.a is referenced by DSO问题,网上搜了搜,很多人遇到,有说加-shared,有说加–coverage,有说加-lgcov,都不能解决我的问题。
后面发现是对gcov原来理解不够透彻的原因,编译一个简单的库,并没有问题,但是主应用链接库时出现报错。
原因就出在编译库的时候是不用加-ftest-coverage -fprofile-arcs的,因为这时候只是编译成.o的二进制文件,gcov要在生成.o文件后在.o文件中打桩,链接的时候需要加上target_link_libraries(*** gcov)。
cmake 错误 “libgcov.a(_gcov_merge_add.o) is referenced by DSO“
于 2023-12-11 15:14:53 首次发布
本文讲述了在使用gcov实现代码覆盖率时遇到的编译错误,涉及到`-fprofile-arcs-ftest-coverage`编译选项和`libgcov`链接问题。作者发现关键在于正确理解gcov的使用时机,即在链接阶段而非编译库阶段加入gcov支持。
摘要由CSDN通过智能技术生成