使用lcov生成代码覆盖率时遇gcov报错:缺少'-x'参数
解决lcov生成覆盖率报告时的gcov报错问题
核心问题分析
报错gcov: error: missing argument to '-x'是因为lcov调用gcov时传递了不完整的-x参数,大概率是lcov版本与gcc 10+的gcov不兼容导致的,同时出现的子例程重定义警告也是旧版lcov的常见问题。
具体解决方法
1. 升级lcov到兼容版本
旧版lcov(如1.14及更早)对gcc 10+的gcov支持存在缺陷,升级到最新版本即可解决:
- 对于Fedora系统(你的环境是fc36),执行:
sudo dnf update lcov
- 升级完成后重新执行你的lcov命令:
lcov --capture --directory . --output-file main2.info
2. 明确指定gcov工具版本
如果暂时无法升级lcov,可以在调用lcov时强制指定对应版本的gcov工具,避免版本不匹配:
lcov --capture --directory . --output-file main2.info --gcov-tool gcov-10
3. 临时修复geninfo脚本(不推荐)
如果上述方法都不可行,可手动修改/usr/bin/geninfo脚本:
- 打开该脚本,搜索包含
-x的代码行,找到传递-x参数但未提供对应值的位置,要么补全参数,要么移除多余的-x参数。 - 注意:修改系统脚本可能引发其他问题,仅作为临时应急方案。
验证
执行完修复操作后,重新运行lcov命令,若不再出现gcov: error: missing argument to '-x',且能成功生成main2.info文件,说明问题解决。
内容的提问来源于stack exchange,提问作者somiha
相关产品推荐
相关产品推荐

