`
sunxboy
  • 浏览: 2869042 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

自己编译Google Android内核的Linux源码

阅读更多

这是之前自己在实验室试验时候的文章了,今天才发现还没有发出来,就整理了一下放出。 Google推出了Android平台所基于的Linux的源码,在之前的相关文章中我也提到了这一点,除了比较该内核和标准内核之间的差异外,我们还可 以自己通过源码来编译出自己的内核镜像。虽然目前编译出的镜像是和默认镜像一样的,但是这步成功,会对以后的系统移植有极大帮助。

下面就是比较详细的步骤。首先,我们知道,Android的默认硬件处理器是ARM的,因此我们需要在自己的host机器上构建交叉编译环境。来到 CodeSourcery,(http://www.codesourcery.com/gnu_toolchains/arm /download.html)选择ARM EABI 以及IA32 GNU/Linux,直接下载即可。然后从这里(http://code.google.com/p/android/downloads/list)获 得内核源代码,准备工作就完成了。

然后就是配置交叉编译链并解压缩源代码。建议这里把交叉编译工具的路径添加到PATH中,以后也方便。

好,接下来就是常规的编译内核步骤了。首先需要配置文件。我们编译所需要的配置文件存在于Android运行系统中的proc目录下,具体是 /proc/config.gz,因此,需要将其导出来。打开模拟器emulator -console,然后在另一个终端下使用命令

adb pull /proc/config.gz ./

这样,config.gz就被转移到当前目录下了。解压缩,重命名为.config,放到kernel,也就是源代码解压缩后的目录下,这就是我们编译系统需要用的配置文件。

然后修改Makefile,指定成我们刚下载的交叉编译工具:

CROSS_COMPILE=/home/windstorm/Work/Android/arm-2007q3/bin/arm-none-eabi-

另外,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加载自己编译的内核,看看能否成功运行了。

emulator -kernel YOUROWNPATH/zImage

如果可以,恭喜你,自己编译Android内核就此成功。

分享到:
评论

相关推荐

    android内核编译方法

    本文将详细介绍如何编译Android内核,包括所需的工具链下载、内核源码获取、环境配置等关键步骤。 #### 二、准备工作 在开始编译Android内核之前,需要准备以下几项: 1. **交叉编译工具链**:Android内核运行于...

    小米mix3内核编译过程.docx

    在这个例子中,我们使用了来自谷歌的aarch64-linux-android-4.9编译器,这个编译器是官方指导文件中的推荐编译器。需要注意的是,一些手机内核编译还需要llvm-Snapdragon_LLVM_for_Android_6.0。 三、准备编译工作 ...

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

    ### Google Android操作系统内核编译教程 #### 一、前言 随着移动互联网技术的快速发展,Android系统作为全球最流行的移动操作系统之...希望本文能帮助你成功编译出自己的Android内核,并在未来的工作中发挥重要作用。

    android 内核 4.4 goldfish源码打包下载

    通过分析`kernel/time`和`kernel/interrupts`,我们可以深入理解Android内核如何管理和响应中断请求。 6. **文件系统** Android 4.4支持多种文件系统,如ext4、yaffs2等。在`fs`目录下,我们可以看到这些文件系统...

    Android-x86内核编译

    理解Linux内核和Android系统的结构,熟悉Makefile的规则,以及对Kconfig配置的理解,都是成功编译的关键。此外,持续关注Android-x86项目的更新,以便利用最新的改进和修复,也是保持系统兼容性和性能的关键步骤。

    Android内核编译方法

    - 从Google官方资源库下载Android内核源码,例如: ```bash $ mkdir -p android $ cd android $ tar xzvf ../linux-2.6.23-android-m3-rc20.tar.gz ``` - 解压后,会得到名为`kernel`的目录,其中包含了...

    Ubuntu-32位机安装编译Android2.3源码及内核

    如果你需要自定义内核,你需要获取Android内核源码,这通常位于`/Android/out/target/product/generic/kernel`目录下。你可以修改内核配置,重新编译,然后替换`kernel-qemu`文件。同样,对于其他映像文件(如...

    Android 源码编译的jar包

    在Android开发中,源码编译的jar包是开发者深入理解系统运作、定制化系统或者进行二次开发的重要工具。本文将详细阐述如何编译Android源码以生成`classes.jar`,以及这个过程中的关键知识点。 首先,让我们了解`...

    android 内核 3.18 goldfish源码打包下载

    Android内核是谷歌专为移动设备设计的操作系统核心,而3.18版本的goldfish内核则是Android内核的一个重要分支,主要应用于模拟器环境。这个版本的内核在Android开发和测试中起到了关键作用,对于理解Android系统的...

    Android 系统 8.1源码

    Android是一个基于Linux内核的操作系统,主要用于移动设备如智能手机和平板电脑。它由Google公司维护,并且是开放源代码项目(AOSP)的一部分。Android系统以其高度可定制性和广泛的硬件支持而闻名,这使得它成为...

    Android内核编译

    本文详细介绍了如何在Red Hat Linux 9.0环境下搭建交叉编译环境,并完成了Android内核的编译。此外,还提供了如何运行编译好的内核镜像的方法,以及如何编译SDK和针对不同硬件平台进行编译的具体步骤。这对于想要...

    android应用源码---浏览器源码(AndroidChromium).rar

    Android Chromium是一款开源的浏览器项目,它是Google Chrome浏览器在Android平台上的核心组件。此源码提供了深入了解Android应用程序开发、Web浏览技术以及Chrome浏览器内部工作原理的宝贵资源。通过分析这份源码,...

    Android内核与标准Linux内核对比分析.pdf

    《Android内核与标准Linux内核对比分析》 Android系统是Google公司开发的一款基于Linux内核的开源操作系统,尤其在移动设备领域广泛应用。其系统架构包括四个主要层次:基于Linux的内核模块、运行时库与其他库、...

    android内核移植

    1. **安装Linux环境**:为了进行Android内核的移植工作,首先需要在一个支持的Linux发行版上搭建开发环境。推荐使用Ubuntu Linux系统,因为它提供了丰富的软件包管理工具以及良好的社区支持。 - **安装Ubuntu Linux...

    Ubuntu Android源码以及内核下载与编译

    在Ubuntu系统下,Android源码的下载和编译是一个复杂的过程,涉及到多个步骤和依赖工具的安装。首先,为了能够顺利进行源码下载,我们需要确保系统环境满足要求。本教程中,使用的系统环境是Ubuntu 14.04 LTS,并且...

    安卓Android源码——系统源码获取及编译.zip

    对于初学者,理解和编译Android源码可能需要一定时间,建议先熟悉Linux环境,学习Java和C/C++编程语言,以及基本的Git操作。同时,阅读官方文档和社区论坛,如XDA Developers,可以帮助解决问题和获取最新资讯。 总...

    android 9.0 源码下载(28 r6)

    首先,要下载Android源码,你需要一个Linux环境,因为官方的构建工具链和文档主要针对这个平台。Ubuntu是最常见的选择,但其他基于Debian的发行版也可以。确保你的系统安装了必要的依赖项,如Git、Repo、Java JDK...

Global site tag (gtag.js) - Google Analytics