我在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>修改为"elf.h"


6、然后编译整个内核

make

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

OBJCOPY arch/arm/boot/zImage

Kernel: arch/arm/boot/zImage is ready


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


emulator -kernel arch/arm/boot/zImage

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










更多相关文章

  1. android 4 高级编程 第一章摘
  2. Fuchsia - 简析
  3. Android开发实践:Android交叉编译工具链的使用
  4. android平台下基于cmake编译链接ffmpeg-3.4.x的32位和64位(armea
  5. Android(安卓)C/C++ 开发.
  6. Android(安卓)中如何选择 compileSdkVersion,buildToolsVersion,
  7. Android培训班(8)
  8. Android深度探索(卷1):安装C/C++交叉编译环境
  9. Android(安卓)反编译apk 到java源码的方法

随机推荐

  1. Android之TabHost
  2. android vm heap 虚拟机堆大小 每个应用
  3. 利用Handler来更新android的UI
  4. [黎活明-传智播客]Android视频教程(保存慢
  5. Android获取手机系统版本等信息的方法
  6. Android开发工具配置大全
  7. Ubuntu申请APIkey
  8. Android UI(8)Building Apps with User I
  9. android 9.0 SD卡权限问题 文件管理器没
  10. Android DEX安全攻防战