gcc - 使用 arm-none-eabi-gcc 从 cpp 生成 elf 文件

标签 gcc arm code-coverage eabi

我想在嵌入式目标上对 C++ 源代码进行代码覆盖。 基本思想是,生成一个 elf 以及使用 gcc 打开的 -frofile-arcs -ftest-coverage。 将其下载到 ARM 设备上,然后收集数据以使用 gcov 分析代码覆盖率。

如何使用 arm-none-eabi-gcc 命令生成 elf 文件。 我已经设置了 GNU ARM 工具链并设置了环境变量。 我可以使用 arm-none-eabi-g++ -c -mthumb -mcpu=cortex-m3 -fprofile-arcs -ftest-coverage filename.cpp -o filename.elf 吗?

提前致谢!

最佳答案

不,您需要做更多的事情。您需要与 gcov 库链接。这可以通过 -lgov 和 -fprofile-arcs 链接器标志来实现,希望您的链接器脚本具有 .got 和 .plt 部分。

以上只会生成 .gcno 文件。 .gcda 文件在运行时在硬件内部生成。等待应用程序退出或添加您自己的包装器以创建 .gcda 文件。

最后,您需要找到一种方法从您的硬件中提取此 .gcda 文件。

所有abvoe都在
中得到了很好的解释 https://mcuoneclipse.com/2014/12/26/code-coverage-for-embedded-target-with-eclipse-gcc-and-gcov/

关于gcc - 使用 arm-none-eabi-gcc 从 cpp 生成 elf 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13461084/

相关文章:

c++ - 为什么 std::variant 在 GCC 8.5 和 GCC 12.1 上对于 `const char *` 文字的行为不同?

android - gradle + ndkbuild + android studio 2.2 如何设置支持的 ABI?

ubuntu - GCC/G++ 使用特定版本的 libc++

Python (pip) 包安装失败,出现 'fatal error: limits.h: No such file or directory'

c - 为什么 gcc 不链接 SDL 2.0 C 项目? (苹果系统)

ruby-on-rails-3 - simple_cov : how to include tests of engine to the report?

javascript - CoffeeScript + Mocha + Blanket,怎么做?

arm - 嵌入式开发板

assembly - 将立即 float 加载到 ARM 寄存器中

java - EMMA 究竟是如何标记被覆盖的代码行的……?