Android内核编译札记

2014-11-24 09:04:41 · 作者: · 浏览: 2

1.内核编译完成后可以生成 arch/arm/boot/compressed/vmlinux, arch/arm/boot/Image, arch/arm/boot/zImage


其中vmlinux 是一个elf格式的文件,Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M,而zImage不到2M。zImage 是ARM Linux常用的一种压缩映像文件,它是在zImage之前加上一个长度为0x40的“头”,说明 这个映像文件的类型、加载位置、生成时间、大小等信息。


2.他们之间的关系:


LD vmlinux
SYSMAP System.map
SYSMAP .tmp_System.map
OBJCOPY arch/arm/boot/Image
Kernel: arch/arm/boot/Image is ready
AS arch/arm/boot/compressed/head.o
GZIP arch/arm/boot/compressed/piggy.gz
AS arch/arm/boot/compressed/piggy.o
CC arch/arm/boot/compressed/misc.o
AS arch/arm/boot/compressed/head-xscale.o
LD arch/arm/boot/compressed/vmlinux
OBJCOPY arch/arm/boot/zImage


3.objcopy是GNU实用工具程序,objcopy的作用是拷贝一个目标文件的内容到另一个目标文件中。用于将object的部分获全部内容拷贝到另一个object,从而可以实现格式的变换。


objcopy可用用于将文件转换成S-record格式或者raw二进制格式。


例如,


xxxx-elf-objcopy –O srec test.o test.s19


则将test.o转换成s-record文件中。通常涉及到text段。


xxxx-elf-objcopy –O binary test.o test.bin


则将test.o转换成raw binary文件格式。


当将object文件转换成raw binary格式时,通常将去除掉symbols和relocation信息。在生成s-record过程中,有时需要用选项“-S”,“-R”去除掉binary文件,s-record文件不需要的相应信息。


4.mkimage工具,这个工具可以用来制作不压缩或者压缩的多种可启动映象文件。