Android作为Google公司推出的一款手机开发平台,其本身是基于linux内核的。Google提供的内核源代码中除了linux部分
外,有很大一部分是与虚拟处理器Qemu和模拟硬件平台Goldfish相关的。所以如果想将Android移植到实际的硬件平台上需要将这部分代码剥离
出来。当然这不是这篇文章的重点,我们现在的目的是要编译出一个可以在模拟器上运行的系统内核.
和标准的Linux开发流程一样,Android平台开发的一个很重要的基础工作就是对其内核的编译和移植。本文结合Android的开发文档以及本人的实践经验,简单介绍了Android内核的编译过程,希望有助于对内核移植感兴趣的开发人员。
工作环境及所需软件
包
系统环境:Redhat Linux 9.0
交叉编译器:GNU Toolchain for ARM Processors
其中第一项选择ARM EABI或ARM GNU/Linux,第二项选择IA32 GNU/Linux即可。
Android内核源代码:
查看原图(大图)
Android SDK
查看原图(大图)
1.搭建交叉编译环境
1) 安装Android SDK: 将android-sdk_m5-rc14_linux-x86.zip解压缩到适当路径下即可使用。本文将其释放至/usr/local/android_sdk_linux路径下,并将其tools路径添加到PATH中:
$ export PATH=$PATH:/usr/local/android_sdk_linux/tools
2) 安装交叉编译器:将arm-2007q3-51-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 解压缩至/usr/local/arm-2007q3目录下,并将其bin路径添加到PATH中:
$ export PATH=$PATH:/usr/local/arm-2007q3/bin
查看原图(大图)
3) 解压缩内核源代码:将linux-2.6.23-android-m5-rc14.tar.gz解压缩,得到kernel文件夹,本文中将其放置在/Android目录下。
2.获取内核编译配置文件
交叉编译环境搭建好后需要得到android的内核编译参数的配置文件,该文件需要从android sdk 中的模拟器中得到。启动android模拟器,然后通过adb得到模拟器中提供的内核配置文件:
$emulator &
$adb pull /proc/config.gz
这时候adb工具会连接模拟器,并从它里面下载一个叫做config.gz的文件到你的当前目录下。将其移动
至kernel目录,解压该文件得
到config,将其重命名为.config,这样就可以跳过make config而直接得到Makefile所需要的内核配置文件。
$ gunzip config.gz
$ mv config .config
查看原图(大图)
3.修改Makefile
首先修改第187行,将CROSS_COMPILE值改为arm-none-linux-gnueabi-,这是我们安装的交叉编译工具链的前缀,修改此处意在告诉make在编译的时候要使用该工具链。
查看原图(大图)
然后修改第519、520行,将build id 值注释掉,因为目前版本的android内核不支持该选项。
查看原图(大图)
4.开始编译
在kernel目录下执行make:
$ make
除个别警告外编译过程一切顺利,最终在/kernel/arch/arm/boot目录下面生成一个zImage,即为编译好的内核镜像了。
查看原图(大图)
5.运行该镜像
$emulator -kernel ~/android/kernel/arch/arm/boot/zImage
最终效果如图所示。
分享到:
相关推荐
android,内核编译,android内核编译,android内核编译方法 真正的android内核编译
Android内核编译方法.pdfAndroid内核编译方法.pdfAndroid内核编译方法.pdfAndroid内核编译方法.pdfAndroid内核编译方法.pdf
图解Google Android内核编译教程 Android作为Google公司推出的一款手机开发平台,其本身是基于linux内核的。Google提供的内核源代码中除了linux部分外,有很大一部分是与虚拟处理器Qemu和模拟硬件平台Goldfish相关...
Android内核编译手册
介绍了Android内核编译的方法,适用于新手学习
前言:本篇博文只是简单介绍了利用ARMofficialGCC交叉编译Git平台上提供的Android开源内核。并不涉及太多优化或是深入研究。最好提前熟练使用 G
android内核编译方法[文].pdf
手把手教你在linux下编译android内核并在模拟器中运行
android内核交叉编译工具,下载下来之后一般是存放到/usr/lib目录中,然后修改一下环境变量,写到/etc/profile里面去,参考jdk的写法。
Android系统的内核编译操作过程,简单的文档描述
Android系统内核编译开发图文教程中文版宣贯.pdf
Android内核代码编译
Android系统内核编译开发图文教程中文版
Google官方给的Android源码下载目录是关于ARM的,关于X86-Android源码的下载已经在之前的文档中说明了,由于我公司做的是定制Android系统,在X86架构上,所以有关文档是针对x86架构的。希望对你学习android的移植有...
MTK Android开发环境配置及编译,很详尽的官方文件。
Google操作系统编译 android详细的说明书,您可以自己动手编译一个属于你个人的android
Android系统内核编译开发图文教程,愿意看就看