通过上一篇Ubuntu14.04下载编译Android6.0源码我们已经下载完了Android SDK的所有源代码,但是这其中不包括其对应的Linux内核的源代码。不同的硬件需要下载不同的内核代码,在此https://source.android.com/source/building-kernels可找到对应的关系。
目前我是先下载了Android模拟器对应的Android内核源码,下面介绍具体步骤。
//先按上篇文章设置好相关代\理。
cd ~/android-6.0.1_r46
mkdir kernel
cd kernel
git clone https://android.googlesource.com/kernel/goldfish.git
下载完成后切换到当前模拟器所用的内核代码分支3.4:
git branch -a //查看所有分支
git checkout -b android-goldfish-3.4 remotes/origin/android-goldfish-3.4
之后就可以进行编译了:
cd ~/android-6.0.1_r46/kernel/goldfish
export ARCH=arm
export CROSS_COMPILE=arm-eabi- //配置交叉编译工具
export PATH=$PATH:~/android-6.0.1_r46/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin
make goldfish_defconfig
make
编译完成后会提示内核镜像路径:
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
可以使用Android模拟器来测试编译出的内核文件:
//在后台启动Android模拟器,好让终端可以继续使用。
source build/envsetup.sh
lunch
emulator -kernel ./kernel/goldfish/arch/arm/boot/zImage &
export TARGET_PREBUILT_KERNEL=$your_kernel_path/arch/arm/boot/zImage
make bootimage