【Android源码 栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了Android源码 -Android源代码和内核编译 - 大学课件的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
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 内核源代码:linux-2.6.23-
android-m5-rc14.tar.gz注意该内核版本要与你选用的模拟器版本尽量一致。
Android SDK1.搭建交叉编译环境1 安装
Android SDK: 将
android-sdk_m5-rc14_linux-x86.zip 解压缩到适当路径下即可使用。
本文将其释放至/usr/local/
android_sdk_linux 路径下并将其 tools 路径添加到 PATH 中: export PATHPATH:/usr/local/
android_sdk_linux/tools2 安装交叉编译器: arm-2007q3-51-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 解压 将缩至/usr/local/arm-2007q3 目录下,并将其 bin 路径添加到 PATH 中: export PATHPATH:/usr/local/arm-2007q3/bin3 解压缩内核源代码:将 linux-2.6.23-
android-m5-rc14.tar.gz 解压缩,得到 kernel 文件夹,本文中将其放置在/
Android 目录下。
2.获取内核编译配置文件交叉编译环境搭建好后需要得到
android 的内核编译参数的配置文件, 该文件需要从 androidsdk 中的模拟器中得到。
启动
android 模拟器,然后通过 adb 得到模拟器中提供的内核配置文件:emulator adb pull /proc/config.gz这时候 adb 工具会连接模拟器,并从它里面下载一个叫做 config.gz 的文件到你的当前目录下。
将其移动至 kernel 目录,解压该文件得到 config,将其重命名为.config,这样就可以跳过 make config 而直接得到 Makefile 所需要的内核配置文件。
gunzip config.gz mvconfig .config3.修改 Makefile首先修改第 187 行,将 CROSS_COMPILE 值改为 arm-none-linux-gnueabi-,这是我们安装的交叉编译工具链的前缀,修改此处意在告诉 make 在编译的时候要使用该工具链。
520 ,将 build id 值注释掉,然后修改第 519、 行 因为目前版本的
android 内核不支持该选项。
4.开始编译在 kernel 目录下执行 make: make除个别警告外编译过程一切顺利,最终在/kernel/arch/arm/boot 目录下面生成一个 zImage,即为编译好的内核镜像了。
5.运行该镜像emulator -kernel /
android/kernel/arch/arm/boot/zImage最终效果如图所示。