初识ELF格式 ABI,EABI,OABI】的更多相关文章

尽管每天都在调用linux的elf文件做各种事,但却很少去了解他,最近尝试在orangepi上编译个elf到android手机上运行,因为两个CPU都是ARMv8的.结果运行失败了.遂查找原因.结果挖出这玩意... 以下内容大部分为摘抄整理: 关于ABI,EABI,OABI: ABI(application binary interface) 应用程序二进制接口 一般应用程序是要分各种CPU架构的,ABI用于对接. 而ABI的不同则是linux内核和glibc的升级导致的规范变化导致的.不同的A…
arm-linux-ld 可以将程序链接成我们arm平台下的可运行的程序 以之前使用过的led程序为例: 首先: arm-linux-gcc -g -c led.S (-g是表示产生调试信息, -c是表示只编译不链接) 产生led.o文件 arm-linux-ld -Tled.lds -o led.elf led.o 产生.elf格式的文件 然后通过: arm-linux-readelf命令:读出.elf的详细内容: arm-linux-readelf -a led.elf(显示所有的log信息…
ELF(Executable and Linking Format)是一种对象文件的格式,用于定义不同类型的对象文件(Object files)中都放了什么东西.以及都以什么样的格式去放这些东西.它自最早在 System V 系统上出现后,被 xNIX 世界所广泛接受,作为缺省的二进制文件格式来使用.可以说,ELF是构成众多xNIX系统的基础之一,所以作为嵌入式Linux系统乃至内核驱动程序开发人员,你最好熟悉并掌握它. 其实,关于ELF这个主题,网络上已经有相当多的文章存在,但是其介绍的内容比…
近期研究了一下elf文件格式,发现好多资料写的都比較繁琐,可能会严重打击学习者的热情,我把自己研究的结果和大家分享,希望我的描写叙述可以简洁一些. 一.基础知识 elf是一种文件格式,用于存储Linux程序. 它内部都有一些什么信息呢?大概包含编制好的计算机指令,数据,计算机在须要的时候把这个文件读取到内存中,cpu就能够从内存中一条一条的读取指令来运行了. 所以说想明确elf格式,我们应该了解一下计算机运行程序须要那些信息.所以这一节,我们补充一些计算机系统的基础知识. 进程和虚拟内存: Li…
基于本文的一个实践<使用Python分析ELF文件优化Flash和Sram空间的案例>. 1.背景 ELF是Executable and Linkable Format缩写,其官方规范在<Tools Interface Standard Executable and Linkable Format Specification version 1.2>分为三部分:Executable and Linking Format:Processor Specific(Intel Archit…
前文链接: ELF格式探析之一:Segment和Section ELF格式探析之二:文件头ELF Header详解 今天我们讲对目标文件(可重定位文件)和可执行文件都很重要的section. 我们在讲ELF Header的时候,讲到了section header table.它是一个section header的集合,每个section header是一个描述section的结构体.在同一个ELF文件中,每个section header大小是相同的.(其实看了源码就知道,32位ELF文件中的se…
http://blog.csdn.net/edonlii/article/details/8779075 1. 读取ELF文件头: $ readelf -h signELF Header:  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00  Class:                                                  ELF64  Data:                            …
http://www.cnblogs.com/hzl6255/p/3312262.html ELF, Executable and Linking Format, 是一种用于可执行文件.目标文件.共享库和核心转储的标准文件格式.  ELF格式是是UNIX系统实验室作为ABI(Application Binary Interface)而开发和发布的. 这里简单介绍一下相关历史:  - UNIX:        最初采用的格式为a.out,之后被System V中的COFF取代,最后则被SVR4中的…
百篇博客系列篇.本篇为: v51.xx 鸿蒙内核源码分析(ELF格式篇) | 应用程序入口并不是main | 51.c.h.o 加载运行相关篇为: v51.xx 鸿蒙内核源码分析(ELF格式篇) | 应用程序入口并不是main | 51.c.h.o v53.xx 鸿蒙内核源码分析(ELF解析篇) | 你要忘了她姐俩你就不是银 | 51.c.h.o v54.xx 鸿蒙内核源码分析(静态链接篇) | 完整小项目看透静态链接过程 | 51.c.h.o v55.xx 鸿蒙内核源码分析(重定位篇) | 与…
转自Hex.bin.axf.elf格式文件小结 一.HEX Hex文件,一般是指Intel标准的十六进制文件.Intelhex 文件常用来保存单片机或其他处理器的目标程序代码.它保存物理程序存储区中的目标代码映象.一般编程器均支持生成此种格式文件.如,KEIL下可通过配置相关选项来生成HEX目标文件. HEX文件由记录(RECORD)组成.在HEX文件里面,每一行代表一个记录. 形如  :BBAAAATTHHHH...HHHHCC BB:字节个数. AAAA:数据记录的开始地址,高位在前,低位在…
这周工作终于不太忙了,可以写点笔记总结一下了. 之前的文章如何在Keil-MDK开发环境生成Bin格式文件,介绍了如何在Keil开发环境使用fromelf软件,将生成的axf文件转换为bin文件,这次我们再来介绍一下如何将elf文件转换为hex文件. 如何将elf文件转换为hex文件 elf(Executable and Linkable Format)文件一般是由gcc编译器生成的,在Linux开发环境使用较多,但Windows一般情况下需要使用hex文件来进行烧录,那么如何将elf格式转换为…
一.实验内容 通过阅读bootmain.c,了解bootloader如何加载ELF文件.通过分析源代码和通过qemu来运行并调试bootloader&OS, bootloader如何读取硬盘扇区的? bootloader是如何加载ELF格式的OS? 二.实验相关 ELF文件格式 ELF(Executable and linking format)文件格式是Linux系统下的一种常用目标文件(object file)格式,有三种主要类型: 用于执行的可执行文件(executable file),用…
最近一个月的时间大部分在研究glibc中dlopen的代码,基本上对整个流程建立了一个基本的了解.由于网上相关资料比较少,走了不少弯路,故在此记录一二,希望后人能够站在我这个矮子的肩上做出精彩的成果. ELF格式简介 dlopen是用来加载ELF文件中的共享对象(shared object,下文简称为so)的.ELF文件有多种类别,通过其header中0x10处的两个字节标识,参考Wikipedia.ELF的header中还包含了一些额外信息如指令集.操作系统信息等等,在本文中不会涉及. 可以把…
前言 ELF格式的.gnu.hash节在设计上比较复杂,直接从glibc源码进行分析的难度也比较大.今天静下心来看了这篇精彩的文章,终于将布隆滤波器.算数运算转为位运算等一系列细节搞懂了(值得一提的是,这篇博客十分值得花一些时间读懂,它不仅对总体有一个较好的描述,而且还涉及了许多有益的实现细节).但本人愚钝异常,没有一个完整的walkthrough就不能觉得自己真的搞懂了一个东西.所以本文从查找一个符号的真实情况出发,把ELF格式是如何组织一个符号,以及动态链接器如何读取并处理这些信息以进行符号…
练习四:分析bootloader加载ELF格式的OS的过程. 1.题目要求 通过阅读bootmain.c,了解bootloader如何加载ELF文件.通过分析源代码和通过qemu来运行并调试bootloader&OS, bootloader如何读取硬盘扇区的? bootloader是如何加载ELF格式的OS? 提示:可阅读"硬盘访问概述","ELF执行文件格式概述"这两小节. 2.整个流程 假定进入了保护模式之后,bootloader需要能够加载ELF文件.…
ELF文件的结构如下图所示: ELF文件由4部分组成,分别是ELF头(ELF header).程序头表(Program header table).节(Sections)和节头表(Section header table). 实际上,一个文件中不一定包含全部这些内容,而且它们的位置也未必如上图所示这样安排,只有ELF头的位置是固定的,其余各部分的位置.大小等信息由ELF头中的各项值来决定. ELF header的格式如下代码所示: #define EI_NIDENT 16 typedef str…
ELF file header (ELF文件头) /* The ELF file header. This appears at the start of every ELF file. */ #define EI_NIDENT (16) typedef struct { unsigned char e_ident[EI_NIDENT]; /* Magic number and other info */ Elf32_Half e_type; /* Object file type */ Elf…
本文转载自:https://www.crifan.com/order_eabi_and_oabi/ 1.什么是ABIABI,application binary interface (ABI),应用程序二进制接口.既然是 接口,那就是某两种东西之间的沟通桥梁,此处有这些种情况:A.应用程序 <-> 操作系统:B.应用程序 <-> (应用程序所用到的)库C .应用程序各个组件之间 类似于API的作用是使得程序的代码间的兼容,ABI目的是使得程序的二进制(级别)的兼容. 2.什么是OA…
本文介绍了C6000最新的v7.2或者之后的编译器如何支持ELF(EABI)和COFF-ABI格式,首先由ARM引入嵌入式(Embedded) EABI的介绍,之后比较了COFF-ABI和EABI的区别,如何用编译器选项(--ABI=EABI --strip_coff_underscore)和预编译处理命令来实现从COFF格式到ELF格式的转换,主要是关注long数据类型位宽不一致以及汇编文件变量和函数定义的前置下划线的处理方式.最后是ELF格式引入的链接段区和COFF格式的不同. EABI简介…
linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 建立调试环境 发行版的选择和安装 安装交叉编译工具 bin工具集的使用 qemu的使用 initrd.img的原理与制作 x86虚拟调试环境的建立 arm虚拟调试环境的建立 arm开发板调试环境的建立 gdb基础 基本命令 gdb之gui gdb技巧 gdb宏 汇编基础--X86篇 用户手册 AT&…
http://blog.csdn.net/blizmax6/article/details/6747601 linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 建立调试环境 发行版的选择和安装 安装交叉编译工具 bin工具集的使用 qemu的使用 initrd.img的原理与制作 x86虚拟调试环境的建立 arm虚拟调试环境的建立 arm开发板调试环…
摘自http://www.cnblogs.com/xmphoenix/archive/2011/10/23/2221879.html 可执行文件(ELF)格式的理解 ELF(Executable and Linking Format)是一种对象文件的格式,用于定义不同类型的对象文件(Object files)中都放了什么东西.以及都以什么样的格式去放这些东西.它自最早在 System V 系统上出现后,被 xNIX 世界所广泛接受,作为缺省的二进制文件格式来使用.可以说,ELF是构成众多xNIX…
LInux命令只是和Kernel一起被编译进操作系统的存在于FS的ELF格式二进制文件,或者权限足够的脚本,或者一个软链 ELF(Executable and Linking Format)是一种对象文件的格式,用于定义不同类型的对象文件(Object files)中都放了什么东西.以及都以什么样的格式去放这些东西.它自最早在 System V 系统上出现后,被 xNIX 世界所广泛接受,作为缺省的二进制文件格式来使用.可以说,ELF是构成众多xNIX系统的基础之一,所以作为嵌入式Linux系统…
区别 常用的可执行文件包含两类:原始二进制文件(bin)和可加载执行的二进制文件,在linux中可加载执行的二进制文件为elf文件. BIN文件是直接的二进制文件,内部没有地址标记.bin文件内部数据按照代码段或者数据段的物理空间地址来排列.一般用编程器烧写时从00开始,而如果下载运行,则下载到编译时的地址即可. 在Linux OS上,为了运行可执行文件,他们是遵循ELF格式的,通常gcc -o test test.c,生成的test文件就是ELF格式的.执行elf文件时内核会使用加载器来解析e…
http://ccckmit.wikidot.com/lk:elf 目的檔ELF 格式(Executable and Linking Format) 是 UNIX/Linux 系統中較先進的目的檔格式.這種格式是 AT&T 公司在設計第五代UNIX (UNIX System V) 時所發展出來的.因此,ELF格式的主要文件被放在規格書 -『System V Application Binary Interface』的第四章的 Object Files當中 ,該文件詳細的介紹了 UNIX Syst…
http://blog.csdn.net/lingfong_cool/article/details/7832896 (一) ELF 文件的格式       ELF 文件类型 (1) 可重定位文件( .o 目标文件) : 用于链接创建可执行文件或 so 文件 (2) 可执行文件                     : 用于执行 (3)so( 共享对象 ) 文件            : 用于链接 注 :   一个 Program Header 对应一个 Segment 一个 Section…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是嵌入式开发里的executable文件(elf). 第四.五节课里,痞子衡已经给大家介绍了2种output文件,本文继续给大家讲project生成的另一种output文件-executable文件,也是特别重要的output文件. 文件关系:链接文件(.icf) + 工程文件(.ewp) + 可重定向文件(.o/.a) -> 可执行文件(.out/.elf) 仔细看过痞子衡之前课程的朋友肯定知道,痞子衡在第四节课可重定向文件(.o/.…
[转]https://blog.csdn.net/ZCShouCSDN/article/details/100048461 ELF 文件规范   ELF(Executable and Linking Format)是一个二进制文件规范.用于定义不同类型的对象文件(Object files)中都放了什么东西.以及都以什么样的格式去放这些东西.   现在流行的二进制可执行文件格式 (Executable File Format),主要是 Windows 下的 PE(Portable Executab…
百篇博客系列篇.本篇为: v56.xx 鸿蒙内核源码分析(进程映像篇) | ELF是如何被加载运行的? | 51.c.h.o 加载运行相关篇为: v51.xx 鸿蒙内核源码分析(ELF格式篇) | 应用程序入口并不是main | 51.c.h.o v53.xx 鸿蒙内核源码分析(ELF解析篇) | 你要忘了她姐俩你就不是银 | 51.c.h.o v54.xx 鸿蒙内核源码分析(静态链接篇) | 完整小项目看透静态链接过程 | 51.c.h.o v55.xx 鸿蒙内核源码分析(重定位篇) | 与国…
Linux及安全——ELF实践  一.分析ELF文件头 二.通过文件头找到section header table,理解内容 三.通过section header table 找到各section 四.理解常见.text .strtab .symtabl .rodata 等section 1.编写测试文件test.c 2.使用如下命令编译生成test.o文件 gcc -c test.c -o test.o 使用如下命令查看test.o文件的大小 ls -l test.o 得知test.o大小为7…