osx下编译android内核

如果是在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

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注