专栏中心

EEPW首页 > 专栏 > ELF与BIN文件区别

ELF与BIN文件区别

发布人:电子禅石 时间:2021-03-19 来源:工程师 发布文章

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

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

elfexecutable  and   link   format)文件里面包含了符号表,汇编等。
BIN文件是将elf文件中的代码段,数据段,还有一些自定义的段抽取出来做成的一个内存的镜像。

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

 


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

 

嵌入式开发的时候,我们的编译一个*.S文件,并最终生成bin文件,编译命令大致如下:

CC=arm-softfloat-linux-gnu-gcc

LD=arm-softfloat-linux-gnu-ld

OBJCOPY=arm-softfloat-linux-gnu-objcopy

 

$(CC) -g$(CFLAG) -c boot.S     #先将boot.S文件生成boot.o

$(LD) -g-Bstatic -T$(LDFILE) -Ttext 0x12345600 boot.o --start-group -Map boot.map -oboot.elf    #再将boot.o生成boot.elf,boot.elf通常就是可执行文件,类似于gcc-o test test.c 中的test文件,在LinuxShell下输入./test就可以执行。

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

 

运行arm-softfloat-linux-gnu-objdump-h boot.elf 可以查看该文件的信息,但是如果变成

arm-softfloat-linux-gnu-objdump-h boot.bin会提示错误,为了看boot.bin文件信息,输入:

arm-softfloat-linux-gnu-objdump-h -b binary -m arm boot.bin就可以了。哈哈我也是现学了一招,其中参数-h可以被替换成为-D, -S,-s等等,请用arm-softfloat-linux-gnu-objdump--help查看器中表示的意义。


专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

比亚迪欧洲销量首超特斯拉

2025-05-27

P87C51RA2 RB2 RC2 RD2 单片机使用指南

ESP车身稳定系统视频

视频 2011-05-13

英飞凌推出PSOC 4100T Plus MCU,在单块芯片中集成先进的传感和系统控制功能

NVIDIA 800V数据中心配电系统成形 功率芯片三雄拔头筹

P87C51x2 52x2 54x2 58x2 OTP单片机使用指南 ...

汽车ESP系统功效

视频 2011-05-13

创新的液晶电视LED背光驱动解决方案

趣味介绍- 22纳米到底如何小而强大?

视频 2011-05-06

Bourns全新扩展PDB241-GTR系列吉他电位器

国产半导体重大并购,能否实现算力突围?

P87C51RC+ RD+ 单片机使用指南 (英)

英伟达新款中国特供芯片:放弃Cowos封装和HBM

2025-05-27

实现更安全、更面向未来的电池设计:肖特推出无铅* SEFUSE三端保险丝

如何在LTspice中添加电压控制开关

劳特巴赫Trace32系列培训(2) --PowerTrace助您实时跟踪软件运行

新型功率器件的老化特性:HTOL高温工况老化测试

历史十大高被引论文

2025-05-27

P87C51x2 52x2 54x2 58x2 OTP单片机使用指南

更多 培训课堂
更多 焦点
更多 视频

技术专区