如果不愿使用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应用程序获取系统权限
  2. Android应用程序获取系统权限
  3. 配置新的product(译)——android编译系统
  4. Android(安卓)去掉 ImageButton 的白色背景边框
  5. 关于android内核移植到YLP2440开发板
  6. 【Android(安卓)系统开发】 编译 Android文件系统 u-boot 内核
  7. android布局学习利器-Hierarchy Viewer
  8. Android的源代码结构
  9. Android(安卓)编译时注解

随机推荐

  1. Solar RRL:二维杂化钙钛矿的合成、性能和
  2. 现在使用控件, 更喜欢继承
  3. 4.13 在vSphere环境中创建不同类型的文件
  4. 各种IT职业的英文翻译
  5. 写了一个字符串的二维表: TSta
  6. UI 自动化测试在有赞的实践
  7. 覆盖、再覆盖
  8. rsync daemon模式实战
  9. AEnM:兴利除弊—实现高性能织物基柔性电化
  10. 记一次失败的Perl + Nginx + FastCGI 配