参考文档:http://linux.chinaunix.net/techdoc/beginner/2009/02/06/1060906.shtml

运行环境:Ubuntu8.10

1、构建交叉编译环境
Android的默认硬件处理器是ARM的,因此我们需要在自己的host机器上构建交叉编译环境。来到CodeSourcery,(http://www.codesourcery.com/gnu_toolchains/arm/download.html),点击GNU/Linux对应的链接,再点击IA32 GNU/Linux Installer链接直接下载。
把arm-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2解压到一目录下,如~/programes/。并加入PATH环境变量:
vim ~/.bashrc
添加:
ARM_TOOLCHIAN=~/programes/arm-2008q3/bin/
export PATH=${PATH}:${ARM_TOOLCHIAN};
保存,并source ~/.bashrc

2、获取内核源码
http://code.google.com/p/android/downloads/list
注意该内核版本要与你选用的模拟器版本尽量一致。
下载后,解压后得到kernel.git文件夹:
tar -xvf ~/download/linux-2.6.25-android-1.0_r1.tar.gz

3、获取内核编译配置信息文件
编译内核时需要configure,而一般configure的选项很多,我们往往不知道需要那些选项。Android模拟器运行时,有一文件/proc/config.gz, config.gz是当前内核的配置信息文件,我们把config.gz获取出来,解压放到kernel.git/之下(改名为.config):
cd kernel.git/
emulator &
adb pull /proc/config.gz
gunzip config.gz
mv config .config

4、修改Makefile
修改195行:
CROSS_COMPILE = arm-none-linux-gnueabi-
将CROSS_COMPILE值改为arm-none-linux-gnueabi-,这是我们安装的交叉编译工具链的前缀,修改此处意在告诉make在编译的时候要使用该工具链。
注释562,563行:
#LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,/
# $(call ld-option, -Wl$(comma)--build-id,))
将build id 值注释掉,因为目前版本的android内核不支持该选项。

5、编译
make
很快就编译好,并生成zImage:
LD arch/arm/boot/compressed/vmlinux
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
生成zImage大小为1.23M,android-sdk-linux_x86-1.0_r2/tools/lib/images/kernel-qemu是1.24M

6、用模拟器加载内核测试
cd android/out/cupcake/out/target/product/generic
emulator -image system.img -data userdata.img -ramdisk ramdisk.img -kernel ~/project/android/kernel.git/arch/arm/boot/zImage &
模拟器加载成功就OK了

更多相关文章

  1. Android(安卓)Ant 编译
  2. android 零散笔记不定期更新 v16
  3. 用一个二维码做下载地址,自动区分是 ios 还是 android
  4. x264在android平台上的编译和使用
  5. Android(安卓)NDK学习 简介
  6. Ubuntu Qt安装安卓android编译器
  7. Android(安卓)studio 启动模拟器时解决 VT-x is disabled in BIO
  8. 通读Android文档系列 TWO
  9. mac 上 配置 Android(安卓)NDK 环境

随机推荐

  1. Andriod ADB Interface驱动安装失败Confi
  2. Android Studio 安装 NDK(Mac OX)
  3. Android中Fragment的使用
  4. android内存分析工具- MAT的初识(1)
  5. 如何在Android Studio使用Java8 Lambda表
  6. kotlin Android 之初见
  7. Android的NDK开发(2)-基于NDK的OpenGL开
  8. SwipeRefreshLayout 配合fragment 下拉刷
  9. Android 实现图片的自动缩放,适应分辨率不
  10. 如何让android sdk manager飞奔安装sdk