我在Mac电脑上编译Android的内核源代码遇到了很多问题,下面对遇到的问题进行一个简单的总结,但愿对你们有所帮助。linux
一、Android编译内核的源代码和编译Rom的源代码是分开的,所以若是要编译内核的话,须要单独下载。android
用git从谷歌的网站上克隆:git clone http://android.googlesource.com/kernel/goldfish.gitgit
注意这里不要用https,我用这个的时候常常卡死,下载不了,记得必定要用http。 ide
二、下载完成后,你会发现整个目录是空的,这是由于当前默认分支是master,先用git branch -a命令查看有哪些分支:工具
remotes/origin/HEAD -> origin/masterpost
remotes/origin/android-goldfish-2.6.29网站
remotes/origin/android-goldfish-3.4ui
remotes/origin/linux-goldfish-3.0-wipgoogle
remotes/origin/masterspa
这里咱们选择android-goldfish-3.4分支,用git checkout android-goldfish-3.4切换到该分支,切换的时候会进行解压,解压完成后,就会发现目录下有不少文件了。
三、打开Makefile文件,找到:
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
改为:
ARCH ?=arm
CROSS_COMPILE ?=arm-eabi-
注意 ?=arm 千万不能有空格,不然会出现Make:...../kernel/goldfish/arch/arm: Is a directory. Stop.这样的错误
四、设置编译工具的环境变量,这里须要用到Android源码里面的交叉编译工具:
export PATH=$PATH:~/Android/android_source/prebuilts/gcc/darwin-x86/arm/arm-eabi-4.7/bin
注意:根据你下载的Android源代码版本不一样,可能arm-eabi-4.7 存放的目录和版本号会有所不一样,同时要根据你是Linux系统仍是Mac系统要选择不一样的操做系统,由于个人是OS X系统,选择的是darwin-x86
五、修改硬件配置文件goldfish_armv7_defconfig
执行命令:make goldfish_armv7_defconfig
注意这里千万不要选择 make goldfish_defconfig ,不然你后面模拟器没法正常启动。
若是你编译过程当中遇到下面错误:
scripts/mod/mk_elfconfig.c:4:17: error: elf.h: No such file or directory,说明你的电脑缺乏 elf.h头文件,请到网站http://www.rockbox.org/tracker/9006?getfile=16683 将里面的内容复制下来,保存为elf.h,而后将它保存到scripts/mod 目录下,同时将mk_elfconfig.c,modpost.h中的<elf.h>修改成"elf.h"
六、而后编译整个内核
make
编译成功后,会看到以下信息
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
7. 而后用模拟器加载新编译好的内核
emulator -kernel arch/arm/boot/zImage
打开关于手机,就能够看到新编译好的内核