我在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

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


Mac OS X 编译Android内核源代码_第1张图片









更多相关文章

  1. 【摘录】Google Android操作系统内核编译图文教程
  2. Android 近百个项目的源代码
  3. Android应用程序绑定服务(bindService)的过程源代码分析(3)
  4. Android应用程序组件Content Provider的启动过程源代码分析(3)
  5. Android应用程序组件Content Provider的启动过程源代码分析(5)
  6. Android 文件管理器 Android文件管理器源代码
  7. 为Android内核添加新驱动
  8. 谷歌Android被Linux内核除名
  9. -Android各版本系统源代码下载

随机推荐

  1. Android 5.1 SystemUI-状态栏
  2. android 沉浸式状态栏的三种方法
  3. Android手机拍照和手机相册选取图片的工
  4. 关于android 布局中诡异的AttributeSet
  5. Android通知Notification
  6. 【Android】定义HttpPost连接超时
  7. Android向桌面添加快捷方式,使其指向特定
  8. android联系人过滤
  9. android 自定义组件随着手指自动画圆
  10. android MediaRecorder录音