我在Mac电脑上编译Android的内核源代码遇到了不少问题,下面对遇到的问题进行一个简单的总结,希望对大家有所帮助。


1、Android编译内核的源代码和编译Rom的源代码是分开的,因此如果要编译内核的话,需要单独下载。

用git从谷歌的网站上克隆:git clone http://android.googlesource.com/kernel/goldfish.git

注意这里不要用https,我用这个的时候经常卡死,下载不了,记得一定要用http。


2、下载完成后,你会发现整个目录是空的,这是因为当前默认分支是master,先用git branch -a命令查看有哪些分支:

remotes/origin/HEAD -> origin/master

remotes/origin/android-goldfish-2.6.29

remotes/origin/android-goldfish-3.4

remotes/origin/linux-goldfish-3.0-wip

remotes/origin/master

这里我们选择android-goldfish-3.4分支,用git checkout android-goldfish-3.4切换到该分支,切换的时候会进行解压,解压完成后,就会发现目录下有很多文件了。


3、打开Makefile文件,找到:

ARCH ?= $(SUBARCH)

CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)

改成:

ARCH ?=arm

CROSS_COMPILE ?=arm-eabi-

注意 ?=arm 千万不能有空格,否则会出现Make:...../kernel/goldfish/arch/arm: Is a directory. Stop.这样的错误


4、设置编译工具的环境变量,这里需要用到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


5、修改硬件配置文件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"


6、然后编译整个内核

make

编译成功后,会看到如下信息

OBJCOPY arch/arm/boot/zImage

Kernel: arch/arm/boot/zImage is ready


7. 然后用模拟器加载新编译好的内核


emulator -kernel arch/arm/boot/zImage

打开关于手机,就可以看到新编译好的内核










更多相关文章

  1. 利用BLCR加快android的启动过程
  2. Android编译环境编译Native C的模块
  3. 浅谈Android与Linux系统的差异
  4. apk反编译
  5. 八一八android与Linux的关系
  6. 基于Android(安卓)Bionic 库动态编译busybox
  7. Android(安卓)自动编译、打包生成apk文件 2 - 使用原生Ant方式
  8. 深入浅出 - Android系统移植与平台开发(十)- Android编译系统与定
  9. Android(安卓)build system ---转

随机推荐

  1. Android Training - 使用IntentService执
  2. NVIDIA Debug Manager for Android NDK
  3. android studio 更改背景和设置字体大小
  4. 【notification】Android 中创建状态栏通
  5. Android中的PID,UID,TID
  6. Known Free Software Android Applicatio
  7. android 视频,音频通讯
  8. Android截取字符串
  9. android练习一之获取网页源码
  10. Android: Fragment的相关问题