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

2024-01-11 19:36

本文主要是介绍【ARM 嵌入式 编译系列 10.4 -- elf 文件各个段信息查看】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • elf 文件各个段信息查看

elf 文件各个段信息查看

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

   text    data     bss     dec     hex filename11818    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 命令是检查你的编译输出并评估内存使用情况的有用工具,特别是在资源受限的嵌入式系统开发中。通过理解你的程序哪些部分占用最多内存,你可以做出相应的优化来减小程序的大小。

这篇关于【ARM 嵌入式 编译系列 10.4 -- elf 文件各个段信息查看】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/595477

相关文章

Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法

《Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法》在Linux系统中,管理磁盘设备和分区是日常运维工作的重要部分,而lsblk命令是一个强大的工具,它用于列出系统中的块设备(blockde... 目录1. 查看所有磁盘的物理信息方法 1:使用 lsblk(推荐)方法 2:使用 fdisk -l(

MySQL查看表的最后一个ID的常见方法

《MySQL查看表的最后一个ID的常见方法》在使用MySQL数据库时,我们经常会遇到需要查看表中最后一个id值的场景,无论是为了调试、数据分析还是其他用途,了解如何快速获取最后一个id都是非常实用的技... 目录背景介绍方法一:使用MAX()函数示例代码解释适用场景方法二:按id降序排序并取第一条示例代码解

查看MySql主从同步的偏移量方式

《查看MySql主从同步的偏移量方式》:本文主要介绍查看MySql主从同步的偏移量方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 1.mysql的主从同步方案mysqlphp为了在实现读写分离,主库写,从库读mysql的同步方案主要是通过从库读取主库的binl

SpringBoot如何对密码等敏感信息进行脱敏处理

《SpringBoot如何对密码等敏感信息进行脱敏处理》这篇文章主要为大家详细介绍了SpringBoot对密码等敏感信息进行脱敏处理的几个常用方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录​1. 配置文件敏感信息脱敏​​2. 日志脱敏​​3. API响应脱敏​​4. 其他注意事项​​总结

一文详解如何查看本地MySQL的安装路径

《一文详解如何查看本地MySQL的安装路径》本地安装MySQL对于初学者或者开发人员来说是一项基础技能,但在安装过程中可能会遇到各种问题,:本文主要介绍如何查看本地MySQL安装路径的相关资料,需... 目录1. 如何查看本地mysql的安装路径1.1. 方法1:通过查询本地服务1.2. 方法2:通过MyS

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

查看MySQL数据库版本的四种方法

《查看MySQL数据库版本的四种方法》查看MySQL数据库的版本信息可以通过多种方法实现,包括使用命令行工具、SQL查询语句和图形化管理工具等,以下是详细的步骤和示例代码,需要的朋友可以参考下... 目录方法一:使用命令行工具1. 使用 mysql 命令示例:方法二:使用 mysqladmin 命令示例:方

springboot实现配置文件关键信息加解密

《springboot实现配置文件关键信息加解密》在项目配置文件中常常会配置如数据库连接信息,redis连接信息等,连接密码明文配置在配置文件中会很不安全,所以本文就来聊聊如何使用springboot... 目录前言方案实践1、第一种方案2、第二种方案前言在项目配置文件中常常会配置如数据库连接信息、Red

嵌入式Linux之使用设备树驱动GPIO的实现方式

《嵌入式Linux之使用设备树驱动GPIO的实现方式》:本文主要介绍嵌入式Linux之使用设备树驱动GPIO的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、设备树配置1.1 添加 pinctrl 节点1.2 添加 LED 设备节点二、编写驱动程序2.1

嵌入式Linux驱动中的异步通知机制详解

《嵌入式Linux驱动中的异步通知机制详解》:本文主要介绍嵌入式Linux驱动中的异步通知机制,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、异步通知的核心概念1. 什么是异步通知2. 异步通知的关键组件二、异步通知的实现原理三、代码示例分析1. 设备结构