【ARM compiler】生成ELF文件中包含了那些内容

embedded/2024/9/17 23:41:18/ 标签: arm开发

【更多软件使用问题请点击亿道电子官方网站】

文档目标:用于了解ARM compiler生成的ELF文件中存储的内容进行了解

问题场景:ELF文件主要用于通过调试软件对于代码的运行顺序和数据链接等内容进行分析。了解一下ARM compiler生成ELF文件包含那些内容。

软硬环境:

  1. 软件版本:MDK 5.38a pro
  2. 电脑环境:Windows 11

功能介绍:

ARM中的ELF文件(Executable and Linkable Format)是一种二进制文件格式,用于描述可执行文件、目标文件和共享库的格式和结构。ELF文件通常具有以下通用内容:

1、ELF头:包含了文件的基本信息,例如文件类型、架构、入口地址、段表偏移和字节数等。

2、节表:描述了ELF文件的各种段和节的信息,包括名称、大小、偏移地址和访问属性等。常见的段和节包括.text、.data、.rodata、.bss等。

3、段表:描述了ELF文件各个段和节的偏移量、长度和属性等信息。

4、代码段(.text):包含了可执行代码的二进制内容,用于直接执行。

5、数据段(.data):包含了初始化的全局变量和静态变量的数据内容。

6、只读数据段(.rodata):包含了只读的全局变量,例如字符串常量等。

7、BSS段(.bss):包含了未初始化的全局变量和静态变量的占用空间和初始值均为0。

8、符号表:描述了ELF文件中的各种符号,例如函数名、变量名等,以及它们在哪些节 或段中定义或引用等信息。

9、重定位表:描述编译器进行地址重定位时需要用到的信息和数据,以便在链接时进行 修正。

10、动态链接表(Dynamic Linking):描述了需要在运行时进行动态链接的库文件和函数 列表。

————————————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

关于亿道电子

亿道电子技术有限公司(www.emdoor.cn)是国内资深的研发工具软件提供商,公司成立于2002年,面向中国广大的制造业客户提供研发、设计、管理过程中使用的各种软件开发工具,致力于帮助客户提高研发管理效率、缩短产品设计周期,提升产品可靠性。


http://www.ppmy.cn/embedded/111272.html

相关文章

凸优化学习(2)——梯度类方法求解(gradient descent)

🍅 写在前面 👨‍🎓 博主介绍:大家好,这里是hyk写算法了吗,一枚致力于学习算法和人工智能领域的小菜鸟。 🔎个人主页:主页链接(欢迎各位大佬光临指导) ⭐️近…

各种无人机飞行服务技术详解

随着科技的飞速发展,无人机(Unmanned Aerial Vehicles, UAVs)技术已成为推动多个行业变革的重要力量。从军事侦察到商业应用,再到日常生活中的娱乐拍摄,无人机的身影无处不在。本文将详细解析无人机飞行服务所涉及的关…

计算机科学基础 -- 超流水线

超流水线的概念 超流水线是一种进一步提高处理器性能的技术,它在传统流水线的基础上,将多个流水线组合在一起,能够在同一个时钟周期内同时执行多条指令。这种设计允许处理器的多个功能单元并行处理不同的指令,从而提高指令级并行…

前端---对MVC MVP MVVM的理解

就需要从前端这些年的从无到有、从有到优的变迁过程讲一下。 1. Web1.0时代 在web1.0时代并没有前端的概念,开发一个web应用多数采用ASP.NET/Java/PHP编写,项目通常用多个aspx/jsp/php文件构成,每个文件中同时包含了HTML、CSS、JavaScript、…

k8s--pod控制器--1

Pod控制器介绍 Pod是kubernetes的最小管理单元,在kubernetes中,按照pod的创建方式可以将其分为两类: 自主式pod:kubernetes直接创建出来的Pod,这种pod删除后就没有了,也不会重建 控制器创建的pod&#xf…

数据结构2 :双向链表和内核链表

1.双向链表是一种链表数据结构,其中每个节点包含三个部分:一个数据域(存储节点的数据)、一个前驱指针(指向列表中的前一个节点)和一个后继指针(指向列表中的下一个节点)。这种结构使…

axure循环介绍

一直在犹豫要不要写关于axure循环方面的介绍,因为循环的场景用其它方法都是可以实现的,今天还是用上次手机号码判断的案例来写一下循坏吧。 1、页面新建元件,手机号码输入框重命名为【手机号码输入框】按钮重命名为【按钮】再在页面拖动上来一…

开源直播平台录屏Bililive-go本地Windows环境部署并实现远程录屏

文章目录 前言1. Bililive-go与套件下载1.1 获取ffmpeg1.2 获取Bililive-go1.3 配置套件 2. 本地运行测试3. 录屏设置演示4. 内网穿透工具下载安装5. 配置Bililive-go公网地址6. 配置固定公网地址 前言 本文主要介绍如何在Windows系统电脑本地部署直播录屏工具Bililive-go&…

flink中disableChaining() 的详解

disableChaining() 是 Apache Flink 中用于控制算子链(operator chaining)行为的一个方法。算子链是 Flink 的一种优化技术,默认情况下会将多个连续的算子合并为一个任务(task)以减少开销。但在某些情况下,…

如何在Android 12 aosp系统源码中添加三指下滑截图功能

如何在Android 12 aosp系统源码中添加三指下滑截图功能 系统中截图api非常简单: private static ScreenshotHelper sScreenshotHelper;sScreenshotHelper new ScreenshotHelper(mContext);//调用 sScreenshotHelper.takeScreenshot(WindowManager.TAKE_SCREENSHO…

OpenAI 联合 SWE 发布 AI 软件工程能力测试集,Gru.ai 荣登榜首

在 9 月 3 日,Gru.ai 在 SWE-Bench-Verified 评估最新发布的数据中以 45.2% 的高分排名第一。SWE-Bench-Verified 是 OpenAI 联合 SWE 发布测试集,旨在更可靠的评估 AI 解决实际软件问题的能力。该测试集经由人工验证打标,被认为是评估 AI 软…

TCP核心机制

TCP基本特点:有连接,面向字节流,全双工,可靠传输(TCP最核心的机制) 核心机制一(确认应答): 在网络中,可能我们传输的消息会因为诸多原因导致发送到对方手中的顺序不一样,举个例子: 在这张图中…

十分钟学会Kubernetes(K8S) 部署SpringBoot3.0

1、十分钟学会Kubernetes(K8S) 部署SpringBoot3.0 本课程以 Java 后端开发的视角,带着大家从零基础入门 k8s 实战,掌握企业级容器化管理平台的各种实战应用,以及 Prometheus 监控告警、ELK 日志收集、DevOps 等众多实战课程内容,大…

vue原理分析(十一)研究new Vue()中的initRender

在Vue.prototype._init 中有一些init函数,今天我们来研究这些init函数 Vue.prototype._init function (options) {......{initProxy(vm);}......initLifecycle(vm);initEvents(vm);initRender(vm);callHook$1(vm, beforeCreate, undefined, false /* setContext *…

Oracle RAC环境NBU异机恢复

一、故障原因 9月3日中午,主机运维人员误操作,对sydb数据库的ASM磁盘做了格式化,将三块共享磁盘做了分区,然后使用vgextend命令加入到本地文件系,造成sydb的两个实例异常,没有操作CRS磁盘,所以…

Vue3+TS项目给el-button统一封装一个点击后转圈效果的钩子函数按钮防抖

前言 每个按钮都要单独定义一个loading变量,并且在接口请求前修改为true,接口响应后再修改为false,封装后这段重复的逻辑就可以统一管理不用每次都写一遍了。 效果 新建一个公共的src\common.ts import { ref } from "vue"expor…

2024网络安全学习路线,最全保姆级教程,学完直接拿捏!

关键词: 网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线 首先咱们聊聊,学习网络安全方向通常会有哪些问题 前排提示:文末有CSDN独家网络安全资料包! 1、打基础时间太长 学基础花费很长时间,光语言都有…

常用环境部署(十八)——CentOS7搭建DNS服务器

一、安装Bind服务器软件并启动 1、安装Bind服务 yum -y install bind bind* 2、 启动服务 systemctl start named 3、开机自启动 systemctl enable named 二、查看named进程是否正常启动 1、检查进程 ps -eaf|grep named 2、检查监听端口 ss -nult|grep :53 三、关闭…

2024年9月9日--9月15日(freex源码抄写+ue5肉鸽视频一节调节)

现在以工作为中心,其他可以不做硬性要求。周一到周四,晚上每天300行freex源码抄写,周六日每天1000行。每周3200行,每天完成该完成的即可,早上有时间时进行一小节独立游戏相关的视频教程作为调节即可,不影响…

【Linux】常见指令

1.ls指令 ls指令的作用是显示当前目录下的文件或者目录。 使用:ls [选项] [目录或文件] 登录上linux后,默认所处的路径是在自己的家目录下,输入ls后,就显示了dir1、test等目录(文件夹)以及普通文件&…