MSM平台linux/android build笔记

对两个命令的分析如下:

1/ . ./ccicenv/pid_env设置编译环境以及编译参数:

MSM平台linux/android build笔记_第1张图片

2/ make命令:

MSM的make命令全都需要在源码根目录下执行,直接查找整个./build/core/目录会找到很多PHONY目标。

简单介绍一部分如下:

>>make droid

默认的make对象,会编译整个Android系统

>>make aboot

编译bootloader

>>make bootimage

相当于把bootloader和kernel都编译出来然后合并成boot.img

>>make apps_only

只编译自带的应用

>>make docs

只编译文档

>>make SDK

只编译SDK

>>make checkapi

检查API

>>make update-api

根据API更新current.xml

>>make [lib-name]

编译某个由于LOCAL_MODULE标注的库,源代码所在目录中需要有Android.mk

eg:make libaudio

>>make clean

清除build的输出

 

>>make kernel

编译linux kernel,FSL平台是在./kernel/目录下执行,而MSM平台是在根目录下执行。

在./kernel/目录下执行make mrproper来清除linux内核的编译。

>>make kernelconfig

配置内核选项,FSL平台是在./kernel/目录下执行,而MSM平台是在根目录下执行。

 

重点分析一下linux kernel层的几个make目标,它们都是在./kernel/AndroidKernel.mk里面定义的。

其中kernelconfig的目标定义为:

 kernelconfig: $(KERNEL_OUT) $(KERNEL_CONFIG)
      env KCONFIG_NOTIMESTAMP=true \
      $(MAKE) -C kernel O=../$(KERNEL_OUT) ARCH=arm CROSS_COMPILE=arm-eabi- menuconfig
      cp $(KERNEL_OUT)/.config kernel/arch/arm/configs/$(KERNEL_DEFCONFIG)

其依赖定义为:

$(KERNEL_OUT):
      mkdir -p $(KERNEL_OUT)

$(KERNEL_CONFIG): $(KERNEL_OUT)
      $(MAKE) -C kernel O=../$(KERNEL_OUT) ARCH=arm CROSS_COMPILE=arm-eabi- $(KERNEL_DEFCONFIG)

因此,如果想在./kernel/目录下运行make menuconfig,根据项目的配置将上述脚本展开为:

mkdir -p ./out/target/product/pid/obj/KERNEL_OBJ

make -C kernel O=../out/target/product/pid/obj/KERNEL_OBJ/ ARCH=arm CROSS_COMPILE=arm-eabi- pid_defconfig

env KCONFIG_NOTIMESTAMP=true

make -C kernel O=../out/target/product/pid/obj/KERNEL_OBJ/ ARCH=arm CROSS_COMPILE=arm-eabi- menuconfig

(其中pid为产品名称)

如果不需要拷贝配置的结果,则最后cp那句。


你可能感兴趣的:(linux,android,Module,Build,平台,linux内核)