美文网首页
ELF和Bin文件的区别

ELF和Bin文件的区别

作者: 郄郄郄 | 来源:发表于2018-04-09 11:16 被阅读0次

    Gcc 编译出来的是ELF文件。通常gcc –o test test.c,生成的test文件就是ELF格式的,在linuxshell下输入 ./test就可以执行。

    Bin 文件是经过压缩的可执行文件,去掉ELF格式的东西。是直接的内存映像的表示。在系统没有加载操作系统的时候可以执行。

    elf(executable  and   link   format)文件里面包含了符号表,汇编等。

    Bin文件是将elf文件中的代码段,数据段,还有一些自定义的段抽取出来做成的一个内存的镜像。

    在Embedded中,如果上电开始运行,没有OS系统,如果将ELF格式的文件烧写进去,包含一些ELF格式的东西,arm运行碰到这些指令,就会导致失败,如果用objcopy生成纯粹的汇编 bin文件,程序就可以一步一步运行。

    两种文件都可以运行。机器最终只认BIN,之所以有ELF格式是在有操作系统时,操作系统会根据ELF解析出代码、数据等等,最终仍是以BIN运行。由于elf文件的信息比较全,所以可以用来以单步跟踪的方式运行。关键是看loader。

    $(OBJCOPY)-O binary boot.elf boot.bin #接着将boot.elf->boot.bin,这样可以缩小代码尺寸。

    相关文章

      网友评论

          本文标题:ELF和Bin文件的区别

          本文链接:https://www.haomeiwen.com/subject/zknbhftx.html