打印
[学习资料]

elf文件和bin文件区别

[复制链接]
729|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
中国龙芯CDX|  楼主 | 2023-12-26 09:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
elf文件和bin文件区别:
1) ELF
ELF文件格式是一个开放标准,各种UNIX系统的可执行文件都采用ELF格式,它有三种不同的类型:

可重定位的目标文件(Relocatable,或者Object File)
可执行文件(Executable)
共享库(Shared Object,或者Shared Library)
ELF格式提供了两种不同的视角,链接器把ELF文件看成是Section的集合,而加载器把ELF文件看成是Segment的集合。

2) bin
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文件中代码段数据段的位置并不是它实际的物理位置。他实际物理位置是在表中标记出来的。

使用特权

评论回复
沙发
勇敢的大白菜| | 2023-12-26 09:34 | 只看该作者
bin文件和hex文件有什么区别呢?

使用特权

评论回复
板凳
Latin_newday| | 2023-12-26 10:31 | 只看该作者
bin文件是直接烧录到芯片的二进制文件。
其它文件需要通过烧录器或者其它软件,将文件翻译成bin文件再烧录。

使用特权

评论回复
地板
嵌入小菜菜| | 2023-12-26 11:45 | 只看该作者
hex和bin文件有什么区别呢?

使用特权

评论回复
5
勇者无惧你和我| | 2023-12-26 16:19 | 只看该作者
单片机里面最常用的就是elf,bin,hex文件了。

使用特权

评论回复
6
AdaMaYun| | 2023-12-28 17:55 | 只看该作者
BIN文件是直接的二进制文件,内部没有地址标记

使用特权

评论回复
7
亚瑟| | 2023-12-29 09:46 | 只看该作者
bin是纯二进制不包含其他信息吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

261

主题

1952

帖子

4

粉丝