二、android中bootimage的生成
0.linux VMLINUX 的生成
vmlinux(vmlinuz)是一个包含linux kernel的静态链接的可执行文件,文件型态可能是linux接受的可执行文件格式之一(ELF、COFF或a.out)。vmlinux是未压缩的内核,vmlinux 是ELF文件,即编译出来的最原始的文件。
下面以mtk6582分析为例子。
(1).先看out下的文件:/home/tonylau/tony-workspace/new-v387/my-ap/out/target/product/xxxx(项目名称),
dd该目录下包含所有的手机文件镜像,如bootimage,systemimage等等,还有需要用到的obj(临时文件)
(2).然后进入obj,进一步查看:/home/tonylau/tony-workspace/new-v387/my-ap/out/target/product/xxxx(项目名称)/obj
可以看出,该目录下包含生成(1)中各种image需要用到的临时文件,如app相关的,bootloader相关的,java相关的,kernel相关的(我们关心的是kernel相关的KERNEL_OBJ)
(3).在进入KERNEL_OBJ:/home/tonylau/tony-workspace/new-v387/my-ap/out/target/product//xxxx(项目名称)/obj/KERNEL_OBJ ====>>>>这是我们需要研究的编译vmlinux相关的地方。
====>>>>生成vmlinux:查看.vmlinux.cmd如下
【编译内核之后相应的文件会产生一个 .*.o.cmd的依赖文件, 据此文件可看出被编译的.o文件依赖的头文件,及被编译参数.