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

编译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了

分享到:
评论

相关推荐

    Android系统内核编译开发图文教程中文版宣贯.pdf

    Android系统内核编译开发图文教程中文版宣贯.pdf 本文将详细介绍Android系统内核编译开发的图文教程,涵盖了从搭建交叉编译环境到生成可在模拟器上运行的系统内核的整个过程。同时,本文还将提供了相关的图片和下载...

    linux编译android内核源码问题

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

    Android系统内核编译开发图文教程中文版

    "Android系统内核编译开发图文教程中文版" 本文将详细介绍 Android 系统内核编译的步骤,包括搭建交叉编译环境、获取内核编译配置文件、修改 Makefile 和开始编译等步骤。 一、搭建交叉编译环境 对于 Android ...

    linux 内核配置机制

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

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

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

    android内核编译方法[文].pdf

    在编译 Android 内核时,需要具备一定的 Linux 和编译相关的知识。同时,需要了解 Android 的架构和设计理念,这样才能更好地理解 Android 内核编译的过程。 本文提供了有用的参考资源,包括 Ben "Benno" Leslie 的...

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

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

    Android系统内核编译开发图文教程中文版实用.pdf

    为了编译 Android 内核,需要 Redhat Linux 9.0 作为系统环境,并需要 GNU Toolchain for ARM Processors 作为交叉编译器。下载地址为 http://www.codesourcery.com/gnu_toolchains/arm/download.html,其中第一项...

    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系统缺少了这两个部分在 设备上也是跑不起来的。

Global site tag (gtag.js) - Google Analytics