ELF与BIN文件区别
来源:互联网 发布:python 定义一个list 编辑:程序博客网 时间:2024/04/25 00:49
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运行碰到这些指令,就会导致失败,如果用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查看器中表示的意义。
- ELF与BIN文件区别
- ELF与BIN文件区别
- elf 和 bin文件区别
- ELF Bin 文件查看 ELF Bin 文件区别
- ELF Bin 文件查看 ELF Bin 文件区别
- ELF格式文件和BIN文件的区别
- hex、bin、elf、axf文件区别
- BIN、HEX,ELF,AXF文件的区别
- ELF格式文件和BIN文件的区别
- ELF格式文件和BIN文件的区别
- elf bin文件
- objcopy、 objdump作用 、(bin文件和ELF文件区别)
- BIN与ELF
- BIN与ELF
- bin与elf
- ELF文件和BIN文件
- ELF文件和BIN文件
- ELF文件和BIN文件
- POJ 3259Wormholes(贝尔曼最短路)
- Android 动画框架详解,第 1 部分
- 最长单调递增子序列
- 11.2.0的参数OPTIMIZER_FEATURES_ENABLE会话层与语句层上设置区别;
- 人生哲理枕边书——你应该知道的165个人生哲理
- ELF与BIN文件区别
- 链表的建立以及各种基本操作
- 小编跟大家一起来研究下html中header的内容
- @synthesize obj=_obj的意义详解 @property和@synthesize
- 你说的话 在我心中生了根
- 信息学习16
- 善待自己:改变命运的N个人生哲理
- 在你的灵魂里舞尽我的美丽
- android 工具类 DateUtil