前言
在linux中,不管什么镜像,它都属于文件 ,那么 文件分为两种文件,(文件文件)和(二进制文件)
请参考 文本文件和二进制文件的区别
在linux中,我们也可以将常见的镜像格式用后缀名区分(用后缀名只是为了方便用户阅读,不能代表他一定是什么文件)
请参考 所有计算机中的 后缀名文件一览
我们关注的 镜像文件
vmlinux
arch/arm/boot/Image
arch/arm/boot/compressed/vmlinux
arch/arm/boot/zImage
arch/arm/boot/uImage
arm-linux-gnueabi-gcc -E main.c -o main.i
arm-linux-gnueabi-gcc -S main.i -o main.s
arm-linux-gnueabi-gcc -c main.s -o main.o
arm-linux-gnueabi-gcc main.o -o main
arm-linux-gnueabi-objcopy -O srec main main.srec
arm-linux-gnueabi-objcopy -O binary main main.bin
arm-linux-gnueabi-objdump -D main > main.elf.asm
arm-linux-gnueabi-objdump -D -b binary -m arm main.bin > main.bin.asm
arm-linux-gnueabi-objdump -D -b srec -m arm main.srec > main.srec.asm
hexdump main > main.hex
按格式分类
二进制文件
ELF
main
bin
main.bin
文本文件
srec
main.srec
hex
main.hex
text
main.elf.asm
二进制和文本文件间的转换
- vim 下转换
:%!xxd // bin 转 text
:%!xxd -r // test 转 bin
- shell 下转换
$ printf "0: %.8x" 65534 | sed -e 's/0\: ......../0\: \4\3\2\1/' | xxd -r -g0 > a.bin
$ xxd a.bin
0000000: feff 0000
$ xxd a.bin > a.text