如果不愿使用android系统源代码预编译好的内核,就需要自己编译内核。

一、通过git工具下载最新版的android linux kernel源代码

1、在android源代码根目录中,新建kernel目录

~/Android$ cd mkdir kernel

~/Android$ cd kernel

2、下载适合模拟器平台的内核源代码

~/Android/kernel$git clonehttp://android.googlesource.com/kernel/goldfish.git

需要其他平台内核源代码,可以查阅android官网内核编译页面:

http://source.android.com/source/building-kernels.html

clone完成后,有一个空的目录goldfish,此目录下有一个隐藏的目录.git,进入该目录,查看该分支上都有哪些分支版本

~/Android/kernel$cd goldfish

~/Android/kernel/goldfish$git branch -a

选择goldfish最新版本,把这个版本check out到本地

~/Android/kernel$git checkoutremotes/origin/archive/android-gldfish-2.6.29

这个时候goldfish源码就已经下下来了,接下来的事情就是编译了.

二、编译内核源代码

1、设置交叉编译工具gcc的路径到环境变量PATH

~/Android$ export PATH=$(pwd)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH

我们将使用上述这个目录下的交叉编译器arm-eabi-gcc

确保有预编译目录prebuilt,没有的话,需要clone下来

~/Android$git clone https://android.googlesource.com/platform/prebuilt

2、设置环境变量:指明目标设备的体系架构和交叉编译器

$ export ARCH=arm

$ export SUBARCH=arm

$ export CROSS_COMPILE=arm-eabi-

为arm体系架构和arm-eabi-类型编译器

3、开始编译

~/Android/kernel/goldfish$make goldfish_armv7_defconfig

~/Android/kernel/goldfish$make

注:用$make goldfish_defconfig这样配置也可以编译通过,模拟器也可以启动,但是Android的开机画机就显示不了, $adb shell也死活连不上,原因就是这个goldfish_defconfig这个配置文件问题.

提示:
$make goldfish_armv7_defconfig指令的意思是将目录WORKING_DIRECTORY/kernel/goldfish/arch/arm/configs/下的goldfish_armv7_defconfig文件内的Kconfig配置内容复制到WORKING_DIRECTORY/kernel/goldfish/目录下的.config文件中,.config文件是一个隐藏目录,保存着各个目录下Kconfig文件的配置.

4、查看编译的镜像文件zImage

~/Android/kernel/goldfish$lsarch/arm/boot/
三、在模拟器中运行编译好的内核

1、运行模拟器前先设置模拟器的路径到环境变量PATH中去,同时设置ANDROID_PRODUCT_OUT环境变量

$exportPATH=$PATH:~/WORKING_DIRECTORY/out/host/linux-x86/bin

$exportANDROID_PRODUCT_OUT=~/WORKING_DIRECTORY/out/target/product/generic

2、指定新编译的内核文件启动模拟器

$emulator-kernel~/WORKING_DIRECTORY/kernel/goldfish/arch/arm/boot/zImage&

3、用adb(android调试桥)工具连接模拟器,查看内核版本信息,看看模拟器上跑的内核是不是我们刚才编译出来的内核

$adb shell

4、切换到proc目录,查看内核版本

$cd proc

$cat version

更多相关文章

  1. Android 日志系统logcat内核代码分析
  2. 为Android内核添加新驱动,并添加到menuconfig菜单
  3. 关于android内核移植到YLP2440开发板
  4. Android项目Android Studio目录结构
  5. 【Android 系统开发】 编译 Android文件系统 u-boot 内核 并烧写
  6. 在Ubuntu上下载、编译和安装Android最新内核源代码(Linux Kernel)
  7. android 获取路径目录方法以及判断目录是否存在,创建目录
  8. 数据存储之——Android内、外存储分区&常用存储目录详解(Android
  9. Android gradle build 修改文件名称及目录

随机推荐

  1. android工具之adb monkey
  2. android之view获取getWidth()和getHeight
  3. android 多分布率解决
  4. Android应用程序打包签名、加固、二次打
  5. 一个支持上下滚动动画的Android(安卓)Tex
  6. Android(安卓)Design与Holo Theme详解
  7. Android(安卓)横向布局中间填满
  8. 按着步骤来,学习Android(安卓)NDK入门很简
  9. Android(安卓)复盘——帮你彻底了解消息
  10. Android权限系统