Android内核编译
来源:互联网 发布:js下拉菜单显示选项 编辑:程序博客网 时间:2024/05/29 05:03
Android内核编译
Android作为Google公司推出的一款手机开发平台,其本身是基于linux内核的。Google提供的内核源代码中除了linux部分外,有很大一部分是与虚拟处理器Qemu和模拟硬件平台Goldfish相关的。所以如果想将Android移植到实际的硬件平台上需要将这部分代码剥离出来。
一、搭建开发环境
1. Vmware中的安装和设置Fedora7(moonshine)
本文略去在Win XP下的Vmware中安装和配置MoonShine。
2 建立Android内核开发环境2.1、工作环境及所需软件包
1)系统环境:Fedora7
2)交叉编译器:GNU Toolchain for ARM Processors
(http://www.codesourcery.com/gnu_toolchains/arm/download.html)
本文用:arm-2009q3-68-arm-none-eabi-i686-pc-linux-gnu.tar.bz2
3)Android内核源代码:linux-2.6.23-android-m5-rc14.tar.gz
(http://co
4)Android SDK
(http://co
SDK中带有Android Emulator仿真器等工具,本文用:android_sdk_linux_m3-rc20a.zip
2、搭建交叉编译环境
安装好系统后,把下载的Android kernel,交叉编译器和Android SDK都放在/root/tools目录,
1) 安装交叉编译器
$cd /root
$mkdir tools
$cp arm-2008q3-66-arm-none-eabi-i686-pc-linux-gnu.tar.bz2 tools
$cd tools
$tar jxvf arm-2008q3-66-arm-none-eabi-i686-pc-linux-gnu.tar.bz2
2) 解压Android SDK
$cp ~/android-sdk-linux_x86-1.0_r2.zip ~/tools
$cd ~/tools/
$unzip android-sdk-linux_x86-1.0_r2.zip
3) 解压缩内核源代码
$mkdir kernel
$cp linux-2.6.25-android-1.0_r1.tar.gz kernel
$cd kernel
$tar zxvf linux-2.6.25-android-1.0_r1.tar.gz
$mv kernel.git linux-2.6.25-android-1.0_r1
二、编译和运行Android Kernel
1) 获取Android官方的默认内核配置文件.config
接下来就是常规的编译内核步骤了。首先需要配置文件。我们编译所需要的配置文件存在于Android运行系统中的proc目录下,具体是 /proc/config.gz,因此,需要将其导出来。打开模拟器emulator -console,然后在另一个终端下使用命令 adb pull /proc/config.gz ./
这样,config.gz就被转移到当前目录下了。解压缩,重命名为.config,放到kernel,也就是源代码解压缩后的目录下,这就是我们编译系统需要用的配置文件。
这个.config文件可以从SDK中得到。启动android模拟器,然后用adb从模拟器中提出内核配置文件:
$~/tools/android-sdk-linux_x86-1.0_r2/tools/emulator &
$adb pull /proc/config.gz ~/
$mv ~/ ~/kernel/linux-2.6.25-android-1.0_r1
$cd ~/kernel/linux-2.6.25-android-1.0_r1
$ gunzip config.gz
$ mv config .config
2)编译
$~/mk-kernel.sh sources/linux-2.6.25-android-1.0_r1/
其中mk-kernel.sh脚本如下:
#!/bin/sh
#Simple script for Android Kernel compiling.
#By Neil Chiao, Mar.14,2009
export PATH=$PATH:/home/neil/tools/arm-2008q3/bin
export CROSS_COMPILE=arm-none-eabi-
cd $1||exit 1
make menuconfig
make
另外,2.6.23的内核增加的build-id在这里不能用,必须去掉
#LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,
$(call ld-option, -Wl$(comma)–build-id,))
如果不去掉,编译出来的内核有4.3M大,且模拟器无法加载。我还不是很清楚build-id在这里不能用的原因,知道的朋友请不吝赐教,谢谢。最后就直接make了。生成出来的镜像自动保存为arch/arm/boot/zImage,用ll看,是和原始镜像sdk/tools/lib /images/kernel-qemu的大小一样的。
最后,就是通过emulator加载自己编译的内核,看看能否成功运行了。
3)运行该镜像
$cd ~/tools/android-sdk-linux_x86-1.0_r2/tools/
$./emulator -kernel ~/sources/linux-2.6.25-android-1.0_r1/arch/arm/boot/zImage
(转自:http://blog.163.com/gene_lu/blog/static/64025421200992944931200/?fromdm&fromSearch&isFromSearchEngine=yes)
- Android编译 & Linux内核编译
- android内核编译方法
- Android平台内核编译
- Android平台内核编译
- android 内核编译成功
- android内核编译方法
- android内核编译方法
- android 内核的编译
- android内核,busybox编译
- android内核编译札记
- android内核编译方法
- Android 内核编译运行
- android内核编译方法
- android内核编译方法
- TC8900 Android 内核编译
- 编译android内核
- android内核编译过程
- Android内核编译
- Vaadin Web应用开发教程(29):UI布局-VerticalLayout和HorizontalLayout布局
- Android ApiDemos示例解析(139):Views->Layouts->Baseline->Nested Example 1
- PC问题不发愁!排除显卡6大常见故障
- 四招搞定显卡花屏故障
- 菜鸟晋级必修课 动手解决显卡的常见故障
- Android内核编译
- 电脑玩游戏花屏怎么办,显卡花屏解决方法
- 分词器比较
- 整数的二进制表示中1的个数
- HDOJ 3732 Ahui Writes Word
- wxWidgets编写自定义的控件
- 2012.8.24 单词 An ice treat for animals
- HTML中的 <base> 元素用法
- 编译Android内核 运行内核(kernel)