bin:Binary ,raw binary二进制文件,BIN文件是将elf文件中的代码段,数据段,还有一些自定义的段抽取出来做成的一个内存的镜像,可以被CPU 运行的二进制文件。比如uboot 和kernal或rtos可执行二进制文件。flash上的需要直接运行的只能是raw binary格式的文件。
elf:executable and link format,文件里面包含了符号表,汇编等;ELF格式是在有操作系统时,操作系统会根据ELF解析出代码、数据等等,最终仍是以BIN运行。由于elf文件的信息比较全,所以可以用来以单步跟踪的方式运行和GDB 调试。执行ELF程序则需要一个ELF Loader,比如kernel。
代码生成.o
arm-linux-gnu-gcc -g $(CFLAG) -c test.c
LDFILE= test.lds
.o生成.elf
arm-linux-gnu-ld -g-Bstatic -T $(LDFILE) test.o --start-group -Map test.map -o test.elf
elf 文件转换为bin文件
arm-linux-gnu-objcopy -O binary test.elf test.bin
查看elf 文件信息
arm-linux-gnu-objdump -h test.elf
查看bin文件信息
arm-linux-gnu-objdump -h -b binary -m arm test.bin
bin 文件增加信息头生成image或压缩,运行后还原成2进制文件。