zoukankan      html  css  js  c++  java
  • bin文件和elf文件

     ELF文件格式是一个开放标准,各种UNIX系统的可执行文件都采用ELF格式,它有三种不同的类型:

    • 可重定位的目标文件(Relocatable,或者Object File)

    • 可执行文件(Executable)

    • 共享库(Shared Object,或者Shared Library)

            ELF格式提供了两种不同的视角,链接器把ELF文件看成是Section的集合,而加载器把ELF文件看成是Segment的集合。

            有一篇文章介绍elf文件的格式以及加载过程介绍的很详细,可以看一下,地址:http://www.iteye.com/topic/1121480

    BIN文件是直接的二进制文件,内部没有地址标记。bin文件内部数据按照代码段或者数据段的物理空间地址来排列。一般用编程器烧写时从00开始,而如果下载运行,则下载到编译时的地址即可。

    在Linux OS上,为了运行可执行文件,他们是遵循ELF格式的,通常gcc -o test test.c,生成的test文件就是ELF格式的,这样就可以运行了,执行elf文件,则内核会使用加载器来解析elf文件并执行。

    在Embedded中,如果上电开始运行,没有OS系统,如果将ELF格式的文件烧写进去,包含一些ELF文件的符号表字符表之类的section,运行碰到这些,就会导致失败,如果用objcopy生成纯粹的二进制文件,去除掉符号表之类的section,只将代码段数据段保留下来,程序就可以一步一步运行。

          elf文件里面包含了符号表等。BIN文件是将elf文件中的代码段,数据段,还有一些自定义的段抽取出来做成的一个内存的镜像。
          并且elf文件中代码段数据段的位置并不是它实际的物理位置。他实际物理位置是在表中标记出来的。

  • 相关阅读:
    jmap使用
    Spring boot后台搭建一使用MyBatis集成Mapper和PageHelper
    aspose.slides for java去除水印
    win10 解决Failed installing 'Tomcat8' service
    NoSQL数据库
    windows下Java调用可执行文件
    Neo4j CQL基本使用
    初识Neo4j
    (原)下载pubFig的python代码
    (原+译)win7远程连接ubuntu16.04
  • 原文地址:https://www.cnblogs.com/lovelylife/p/4446454.html
Copyright © 2011-2022 走看看