【ARM 嵌入式 编译系列 10.4 -- elf 文件各个段信息查看】

elf 文件各个段信息查看

在进行代码编译完成的时候,我们会经常见到下面信息, 这个是怎么实现的呢?

   text    data     bss     dec     hex filename
  11818    2120    5736   19674    4cda ra4m2.elf

使用 arm-none-eabi-gcc 编译后生成的 ELF 文件中各个段(section)的大小,可以使用 arm-none-eabi-size 这个命令会显示程序的文本(代码)、数据和 bss 段的大小。

以下是如何使用 arm-none-eabi-size 命令的示例:

  1. 编译你的程序: 假设你有一个名为 main.c 的 C 程序文件,要为 ARM Cortex-M 微控制器编译此文件,你可以使用类似下面的命令:
arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -o main.elf main.c 

这将编译 main.c 并生成 main.elf 可执行文件。

  1. 查看段大小: 一旦你有了 .elf 文件,可以使用 arm-none-eabi-size 命令如下:
arm-none-eabi-size main.elf 

这将输出 main.elf 的大小概览,包括文本、数据和 bss 段。

输出通常看起来像这样:

text   data     bss     dec     hex    filename 
1048     0       8      1056    420    main.elf 

在上面的例子中:

  • text 字段显示了程序代码的大小。
  • data 字段显示了初始化的全局变量的大小。
  • bss 字段显示了未初始化的全局变量的大小。
  • dec 字段显示了所有段大小的总和,以十进制表示。
  • hex 字段显示了所有段大小的总和,以十六进制表示。
  1. 输出格式选择: 如果你想要更详细的输出,可以使用 --format 选项指定不同的输出格式。例如,要以另一种格式查看段信息,可以使用以下命令:
arm-none-eabi-size --format=berkeley main.elf 

或者,如果你想要系统 V 格式的输出,可以使用:

arm-none-eabi-size --format=sysv main.elf 

arm-none-eabi-size 命令是检查你的编译输出并评估内存使用情况的有用工具,特别是在资源受限的嵌入式系统开发中。通过理解你的程序哪些部分占用最多内存,你可以做出相应的优化来减小程序的大小。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-17 04:00:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-17 04:00:05       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-17 04:00:05       82 阅读
  4. Python语言-面向对象

    2024-01-17 04:00:05       91 阅读

热门阅读

  1. monorepo工程开发交互nodejs命令行程序

    2024-01-17 04:00:05       54 阅读
  2. Kubernetes 面试宝典

    2024-01-17 04:00:05       46 阅读
  3. HTML5笔记

    2024-01-17 04:00:05       53 阅读
  4. ubuntu卸载docker

    2024-01-17 04:00:05       52 阅读
  5. 代码随想录-刷题第五十六天

    2024-01-17 04:00:05       62 阅读
  6. 【大模型应用】小白借助chatgpt开发谷歌插件

    2024-01-17 04:00:05       42 阅读
  7. 【代码随想录】3

    2024-01-17 04:00:05       47 阅读
  8. Android mk文件

    2024-01-17 04:00:05       49 阅读
  9. linux 空间莫名消失

    2024-01-17 04:00:05       52 阅读
  10. 英语连读技巧6

    2024-01-17 04:00:05       47 阅读