如果是在linux系统下编译android的内核,基本不会有什么大的问题,但osx就稍微顽皮一些。
以nexus 5的内核编译为例,首先下载编译内核用的arm-eabi-gcc工具:
git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7/
然后下载内核源代码
git clone https://android.googlesource.com/kernel/msm.git
之后切换代码到需要的branch
$ cd msm/ $ git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/android-msm-2.6.35 remotes/origin/android-msm-3.9-usb-and-mmc-hacks remotes/origin/android-msm-flo-3.4-jb-mr2 remotes/origin/android-msm-flo-3.4-kitkat-mr0 remotes/origin/android-msm-flo-3.4-kitkat-mr1 remotes/origin/android-msm-hammerhead-3.4-kitkat-mr1 ... $ git checkout origin/android-msm-hammerhead-3.4-kitkat-mr1
以上都是常规步骤,针对osx还有一些必须的改动:
增加两个头文件elf.h和features.h到内核源码的scripts/mod下面,头文件下载
修改scripts/mod/mk_elfconfig.c和scripts/mod/modpost.h两个文件,将<elf.h>改成 “elf.h”
将scripts/recordmcount.c中的<elf.h>修改为 “mod/elf.h”
修改kernel/timeconst.pl,将defined(@array)的修改为@array
最后再编译即可:
export ARCH=arm export CC=arm-eabi- export CROSS_COMPILE=arm-eabi- make hammerhead_defconfig make menuconfig make -k