无法找到 arm 工具链的 GCC 代码覆盖率 libgcov.so

Unable to find GCC Code coverage libgcov.so for arm toolchain

重现问题的步骤

#include<iostream>
int main(){
    std::cout <<  "Hello World" << std::endl;
}
  1. 写入main.cpp

  2. 下载Toolchain from this link

  3. 使用以下命令编译。

    • 。 /opt/poky/1.6/environment-setup-armv7a-vfp-neon-poky-linux-gnueabi
    • arm-poky-linux-gnueabi-g++ main.cpp -o main --coverage
  4. 会出现如下错误。

错误

/opt/poky/1.6.1/sysroots/i686-pokysdk-linux/usr/libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/4.8.3/ld: cannot find -lgcov collect2: error: ld returned 1 exit status

问题陈述

如何为 ARM poky 工具链生成 libgcov.so 文件?

-fprofile-args --coverage -ftest-coverage

我可以通过安装

使用 x86 linux g++ 编译器生成代码覆盖率报告
- sudo apt-get install gcovr
- g++ main.cpp -o main --coverage

是否有任何源代码或 git 存储库,我可以从中为 ARM poky 工具链生成 libgcov.so 文件?或者是否有任何解决方案可以从 ARM poky 工具链中获取程序的覆盖率?

我已尝试将以下存储库克隆并编译为库,但问题未解决。

https://github.com/reeteshranjan/libgcov-embedded

如何在 Ubuntu 18.04 上为使用 ARM 工具链(poky 1.6)编写的程序生成代码覆盖率报告文件?

  1. 使用 yocto 构建系统构建应用程序

    bitbake

  2. 将/tmp/deploy/生成的libgcov.so复制到/opt/poky/1.6.1/sysroots/i686-pokysdk-linux/usr/lib/

  3. 使用 g++ 触发构建