`
Michaelmatrix
  • 浏览: 209653 次
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

编译android的linux内核

 
阅读更多

参考文档: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了

分享到:
评论

相关推荐

    linux编译android内核源码问题

    本文收集了编译android内核源码大部分error,亲自试过,都能找到相对应的解决方法

    linux 内核配置机制

    前面我们介绍模块编程的时候介绍了驱动进入内核有两种方式:模块和直接编译进内核,并介绍了模块的一种编译方式——在一...我们在进行linux内核配置的时候经常会执行make menuconfig这个命令,然后屏幕上会出现以下界面

    从Android NDK安装ARM交叉编译工具链

    本文由TinyLab.org原创。 本文简要介绍了如何安装Android NDK的C/C++语言...通过该工具链接可以交叉编译Android上的C语言程序,也可以用来编译Android Linux内核。文中举例介绍了如何通过该交叉工具链编译Busybox。

    全志系列芯片android与Linux内核按键驱动源码

    全志系列芯片android与Linux内核按键驱动源码

    linux内核编译最完整过程成功案例

    这是本人编译内核的整个过程,本过程经多次在不同机器上验证都可以通过,但每台机器的安装配置、环境等都不一样,故出现错误是很正常的事。。去百度一下就OK了。。。现在本人将它共享出来。。希望对大家有所帮助!~

    图解Google Android内核编译教程

    Android作为Google公司推出的一款手机开发平台,其本身是基于linux内核的。Google提供的内核源代码中除了linux部分外,有很大一部分是与虚拟处理器Qemu和模拟硬件平台Goldfish相关的。所以如果想将Android移植到实际...

    android内核交叉编译工具

    android内核交叉编译工具,下载下来之后一般是存放到/usr/lib目录中,然后修改一下环境变量,写到/etc/profile里面去,参考jdk的写法。

    [14本经典Android开发教程]-8-Linux内核阅读心得体会

    [14本经典Android开发教程] 8 Linux内核阅读心得体会 读核感悟 2 读核感悟 Linux内核启动 内核的生成 2 读核感悟 Linux内核启动 从hello world说起 3 读核感悟 Linux内核启动 BIOS 5 读核感悟 Linux内核启动 setup...

    android内核编译手册(图文并茂)

    手把手教你在linux下编译android内核并在模拟器中运行

    树莓派linux内核交叉编译shell脚本.zip

    树莓派内核交叉编译脚本,ubuntu上运行,scp传到树莓派,运行pifuzhi.sh覆盖原来文件,树莓派B ver2测试通过,但免密码scp没有解决好,另外内核3.6版本没有dtb而是dts文件。

    在Ubuntu上下载、编译和安装Android最新内核源代码(LinuxKernel).pdf

    在Ubuntu上下载、编译和安装Android最新内核源代码(LinuxKernel).pdf

    linux 内核编译过程

    简单介绍了 linux 的编译过程,makefile工程的实现

    Linux内核编译详谈

    Linux内核编译详谈 嵌入式开发重要资料 更多资源,请登录我的博客:http://blog.csdn.net/baidu_man2010 如需real 6410 嵌入式ARM11开发板请登录My_Shop:http://real-arm.taobao.com

    MSM8953 Linux Android软件用户手册 .pdf

    Android驱动开发指南,剖析安卓底层开发,Linux内核驱动开发,是一个很好的入门教程。包括Linux内核驱动开发详细解释,安卓驱动开发详细教程

    Ubuntu中为Android系统上实现内置C可执行程序测试Linux内核驱动程序

    在前一篇文章中,我们介绍了如何在Ubuntu上为Android系统编写Linux内核驱动程序。在这个名为hello的Linux内核驱动程序中,创建三个不同的文件节点来供用户空间访问,分别是传统的设备文件/dev/hello、proc系统文件/...

    Android内核开发:系统编译输出的镜像文件

    主要介绍一下源码编译输出的几个重要的镜像文件,这里把bootloader源码和Linux内核源码的编译输出也算在其中,因为毕竟Android系统缺少了这两个部分在 设备上也是跑不起来的。

    Android内核分析

    介绍 Android 移动平台系统架构,通过对 Android 源代码的分析,将其与标准 Linux 内核源代 码 相比 较 ,详 细解 析 Android 内 核的 功 能 更新 ,分 ...之间做出一个定位,介绍 Ubuntu 环境下 Android 内核的获得与编译。

    Google Android操作系统内核编译图文教程

    和标准的Linux开发流程一样,Android平台开发的一个很重要的基础工作就是对其内核的编译和移植。本文结合Android的开发文档以及本人的实践经验,简单介绍了Android内核的编译过程,希望有助于对内核移植感兴趣的开发...

    android_kernel_compile_tools:一些帮助从源代码编译 Android 内核的文件

    按照 Google 的说明设置构建环境,包括下载工具链,可以通过从 NDK 完整下载(Linux 用户可能需要chmod +x .bin 文件,然后再运行它以自动提取其中的整个预构建工具链)。 如何从头编译 mkbootimg 获取Android源...

Global site tag (gtag.js) - Google Analytics