EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
ARM 之 对象文件 介绍" e9 I }- `' f3 A! T, A
; R0 w# T. A! ]6 e" I! u# Y+ ~1 `6 u& O1 s
对象文件格式(Object file format). e% J7 x, g* y* q- O
/ I5 _4 z9 b6 a V) H, U ELF 文件标准里把系统中采用ELF 格式的文件归类为四种: 可重定位文件,Relocatable File ,这类文件包含代码和数据,可用来连接成可执行文件或共享目标文件,静态链接库归为此类,对应于Linux 中的.o ;Windows 的 .obj. 可执行文件,Executable File ,这类文件包含了可以直接执行的程序,它的代表就是ELF 可执行文件。Linux下,他们一般没有扩展名,比如/bin/bash ;Windows 下的 .exe 共享目标文件,Shared Object File ,这种文件包含代码和数据,链接器可以使用这种文件跟其他可重定位文件的共享目标文件链接,产生新的目标文件。另外是动态链接器可以将几个这种共享目标文件与可执行文件结合,作为进程映像来运行。对应于Linux 中的 .so,Windows 中的 DLL 核心转储文件,Core Dump File,当进程意外终止,系统可以将该进程地址空间的内容及终止时的一些信息转存到核心转储文件。 对应 Linux 下的core dump。 现在PC平台流行的可执行文件格式(Executable File Format),主要是Windows下的PE(Portable Executable)和Linux的ELF(Executable and Linking Format,可执行和链接格式)。他们都是COFF(Common Object File Format)的变种。ARM架构采用的也是ELF文件格式。 COFF是在Unix System V Release 3时由 UNIX 系统实验室(UNIX System Laboratories, USL)首先提出并且使用的文件规范,后来微软公司基于COFF格式,制定了PE格式标准,并将其用于当时的Windows NT系统。在System V Release 4时,UNIX系统实验室(USL)在COFF的基础上,开发和发布了ELF格式,作为应用程序二进制接口 (Application Binary InteRFace(ABI)。 此后,工具接口标准委员会(TIS)选择了正在发展中的ELF标准作为工作在32位INTEL体系上不同操作系统之间可移植的二进制文件格式。 由于ELF文件具有通用性强的优点,现在流行的开发模式是:先通过编译工具生成ELF文件格式的可执行文件,在使用外部工具,抽离出ELF文件中的相应部分,生成BIN文件。著名的GNU、bootloader、U-Boot就采用了这种做法。例如,编译器工具集GCC的BIN生成工具是elf2bin。ARM公司虽然使用的是自家的armcc编译器,但是也提供了fromelf工具来实现上面的方式。
8 y7 w2 Q- Z4 r, j) M1 N- J/ v3 E; l* ~3 O/ z6 i- c( h
" K, v5 r6 i5 [5 c: w
! D" Q# X! d J6 V |