首页 > 解决方案 > 无法为 arm 工具链找到 GCC 代码覆盖率 libgcov.so

问题描述

重现问题的步骤

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

  2. 从此链接下载工具链

  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:找不到-lgcov collect2 : 错误: ld 返回 1 个退出状态

问题陈述

如何为 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)编写的程序生成代码覆盖率报告文件?

标签: c++g++yoctogcovgcovr

解决方案


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

    位烘烤

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

  3. 使用 g++ 触发构建


推荐阅读