整个申请的结构:
当前情景(工作/不工作)
我尝试使用上述结构中的lcov / gcov获取'low_level.so'共享库的代码覆盖率但未成功,下面是尝试的步骤并看到错误:
编译'low_level.so'库时添加了“-fprofile-arcs”“ - ftest-coverage”标志。 并创建了图书馆。
为'high_level.a'库的编译添加了“-coverage”选项。并创造了 库。
为应用程序添加了'LFLAGS = -lgcov -coverage'(带'main'功能)。和 创建了可执行应用程序。
现在,当我尝试执行上面编译的应用程序时,我得到以下错误 dlopen的: 无法dlopen:/home/test/libXXX.so:未定义的符号:__ gcov_merge_add
问题?:
注意:所有代码都在'C'。
仅供参考,我搜索了同样的问题并发现了一些类似的问题,这个问题仍然落后于一个选定的最佳答案: How to find the coverage of a library opened using dlopen()? 除了不使用dlopen之外,网上还没有好的指针。
答案 0 :(得分:0)
感谢Mat提供一些意见和建议。
内联到那个并做了一些试验和错误,我终于能够通过在编译时添加“-fprofile-arcs”和“-ftest-coverage”选项作为链接器标志以及编译器标志来解决问题'low_level.so'图书馆。
答案 1 :(得分:0)
我通过将-lgcov添加到共享库链接来解决这个问题。