本文是在Ubuntu10.10系统上进行实践的。

1 因为我们需要Android的模拟器,所以需要安装Android的SDK,并创建AVD,

可以一次命名为AVD15,AVD22,AVD23,...

AVD15对应1.5,AVD22对应2.2,AVD23对应2.3,...

获取.config文件:

在启动模拟器AVD15:

$emulator -avd AVD15

$pull /proc/config.gz . //将/proc/config.gz这个文件复制到本地的目录,对应Linux上运行该命令的当前工作的目录,下同

然后,将其解压并保存为.config,留待后面使用

2 arm编译器

网站下载arm工具链

注意选择较早的版本,很有可能是google那班人在编译的时候 选择的是当时的最新的版本,但是后来就一直用那个版本

http://www.codesourcery.com/sgpp/lite/arm/portal/subscription?@template=lite

要之前的版本:点击 All versions 即可看到所有的发行版本,2008q3-41这个版本是经过很多人测试可以用的。

解压后,设置环境变量,将/usr/local/arm-2008q3/bin 添加到$PATH中

其中 /usr/local/为保存解压后的arm-tools-chain的根目录

3 下载Android的Linux内核

记 住是Android的Linux内核(git clone git://android.git.kernel.org/kernel/common.git),而不是通用的Linuxe内核源码(git clone git://android.git.kernel.org/kernel/linux-2.6.git)

$ git clone git://android.git.kernel.org/kernel/common.git  kernel-common

//其中 kernel-common为存放从代码库下来的代码的目录,下同

这一步是个漫长的等待...

$ cd ~/kernel-common

$ git branch

$ android-2.6.36

//这个随着版本的变化而变化

4 下载完Android的Linux内核源码,你会发现在/arch/arm/configs/下没有goldfish_defconfig这个文件,恩我们需要check_out gold_fish版本(模拟器的硬件配置就是Gold_Fish的)

$ cd ~/kernel_common

$ git branch -a

$  *android-2.6.36
  remotes/origin/HEAD -> origin/android-2.6.36
  remotes/origin/android-2.6.35
  remotes/origin/android-2.6.36
  remotes/origin/archive/android-2.6.25
  remotes/origin/archive/android-2.6.27
  remotes/origin/archive/android-2.6.29
  remotes/origin/archive/android-2.6.32
  remotes/origin/archive/android-gldfish-2.6.29
  remotes/origin/archive/android-goldfish-2.6.27

//以上显示是目前看到的,将来的某个时候可以就有点不同了,甚至老版本的Branch 名字也会被修改

//故要特别注意

$ git checkout remotes/origin/archive/android-gldfish-2.6.29

git checkout remotes/origin/android-goldfish-3.4
//这个过程就快多了,等待下载完数据

//git 这个东西确实不怎么好用,还是想念Windows上TortoiseSVN

当下载完,你就能在kernel-common/arch/arm/configs/下看到goldfish_defconfig这个文件

5 编译

1)将1中的.config文件拷贝到 ~/kernel_common目录下

2)修改 ~/kernel_common目录下的Makefile文件(修改两处) -- 修改之掐最好备份下这个文件,因为如果你修改了这个文件 用git获取新版本的时候

会提示Makefile文件被修改

ARCH        ?= arm //制定CPU的架构为ARM
CROSS_COMPILE    ?= arm-none-linux-gnueabi- //arm编译工具前缀

3)

$ make goldfish_defconfig

$ make -j2 //现在的机器都是双核的,这样代码编译就快多了

编译最后两行信息:

OBJCOPY arch/arm/boot/zImage
  Kernel: arch/arm/boot/zImage is ready

6 用我们刚刚编译成功内核启动模拟器(这样不会对原有的模拟器产生任何的影响)

$ emulator -avd AVD15 -kernel ~/kernel_common/arch/arm/boot/zImage

如果模拟器能起来,那说明成功了。

打开另外一个终端,这样就能解决上面的终端被占用的情况下,也能使用终端

$ adb shell

#cd /proc

# cat version
Linux version 2.6.29-00262-gb0d93fb-dirty (dream@dream-VGN-FW351J) (gcc version 4.3.2 (Sourcery G++ Lite 2008q3-41) ) #1 Fri Dec 24 12:31:28 CST 2010
# cat cupinfo
cupinfo: No such file or directory
# cat cpuinfo
Processor    : ARM926EJ-S rev 5 (v5l)
BogoMIPS    : 272.79
Features    : swp half thumb fastmult vfp edsp java 
CPU implementer    : 0x41
CPU architecture: 5TEJ
CPU variant    : 0x0
CPU part    : 0x926
CPU revision    : 5

Hardware    : Goldfish
Revision    : 0000
Serial        : 0000000000000000

注: dream@dream-VGN-FW351J,其中的 dream为当前登录Ubuntu的用户名,而dream-VGN-FW351J是机器名

Sourcery G++ Lite 2008q3-41 这个就是arm tools chain的版本了

参考文献:

1. android内核编译方法

2.下载编译android kernel

3. android内核编译方法

4. git-clone指定branch

5. http://android.git.kernel.org/

anroid源码下载和编译的更多相关文章

  1. android源码下载以及编译自己的ROM

    android源码下载以及编译自己的ROM 最近发现kernel.org被墙了,为什么这种网站也能被墙了? 要想下载源码的话,只能绕过去了.下面是我从网上搜索到的一些下载方法: =========== ...

  2. Harmony OS 开发避坑指南——源码下载和编译

    Harmony OS 开发避坑指南--源码下载和编译 本文介绍了如何下载鸿蒙系统源码,如何一次性配置可以编译三个目标平台(Hi3516,Hi3518和Hi3861)的编译环境,以及如何将源码编译为三个 ...

  3. springFramework 源码学习之源码下载与编译

    1.源码下载 Spring已经将源码从svn迁移到了git.对于习惯了svn的人来说依然可以svn checkout,最好checkout到英文路径下,本人中文路径编译不过,具体原因不明,路径: ht ...

  4. [原创]Nexus5 源码下载、编译、真机烧录过程记录

    asop使用清华镜像源https://mirror.tuna.tsinghua.edu.cn/help/AOSP/ 一开始使用每月初始化包的方式因为无法搞定版本的问题,没能通过编译,无奈,老老实实一点 ...

  5. Android 7.1.1系统源码下载、编译、刷机-Nexus 6实战

    想成为一位合格的Android程序员或者一位Android高级工程师是十分有必要知道Android的框架层的工作原理,要知道其工作原理那么就需要阅读Android的源代码. 想要阅读Android的源 ...

  6. openwrt(一):openwrt源码下载及编译环境搭建

    声明:从网上各位大神的博客学习,整理后记录,非原创. 注:请用非root用户来下载源码 导航: 1. openwrt编译环境搭建 2. openwrt源码下载 3. feeds更新 1. openwr ...

  7. openwrt开发笔记一:源码下载与编译

    1.1 环境要求 编译系统:Linux发行版(本文使用Ubuntu) 编译一个可以安装的OpenWrt固件镜像文件(大约8MB大小的),你需要: 一个纯净的OpenWrt编译系统大约需要200MB的空 ...

  8. WebRTC源码开发(一)MacOS下源码下载、编译及Demo运行

    工作需要测试网络传输算法,逐学习WebRTC源码 工作环境 Mac OS 10.14 Xcode 10.2.1 源码下载 从google(需要[你懂的]) 首先[你懂的] 打开终端,输入curl ww ...

  9. Android学习系列(38)--Android源码下载和编译

    前面多篇文章介绍到如何下载和编译Android或者CM源码,不过一直都是放在<拓展系列>里.随着学习的深入,android源码是非常有参考和学习价值,强烈推荐大家都去下载,编译,学习,所以 ...

随机推荐

  1. wordpress后台进去空白怎么办?

    最近博客换成了用wordpress程序搭建,内容和版面也重新设计.经常使用FTP工具,更改模板或者其他程序文件.由于对wordpress不太了解,竟然出现了wordpress后台进去空白的问题,而前台 ...

  2. echarts3.0 本期累计堆叠

    @{ ViewBag.Title = "barlj"; } <h2>barlj</h2> <div id="main" style ...

  3. 【AtCoder】AGC005F - Many Easy Problems

    题解 我们把一个点的贡献转化为一条边的贡献,因为边的数量是点的数量-1,最后再加上选点方案数\(\binom{n}{k}\)即可 一条边的贡献是\(\binom{n}{k} - \binom{a}{k ...

  4. USACO 5.2 Snail Trails

    Snail TrailsAll Ireland Contest Sally Snail likes to stroll on a N x N square grid (1 <n <= 12 ...

  5. lr参数化取值与连接数据库

    TXT文本,EXCEL表格以及数据库中的表都可以作为参数的数据集载体,LR都是支持的. 特别提醒: 1.在形成数据池之后,数据库中的数据变化不会影响数据池中的数据. 2.数据文件一定要以一个空行结束, ...

  6. hdoj1102 Constructing Roads(Prime || Kruskal)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1102 题意 有n个村庄(编号1~n),给出n个村庄之间的距离,开始时n个村庄之间已经有了q条路,现在需 ...

  7. POJ - 3111 K Best 0-1分数规划 二分

    K Best Time Limit: 8000MS   Memory Limit: 65536K Total Submissions: 12812   Accepted: 3290 Case Time ...

  8. spring 事务配置

    事务配置文档xml <!-- from the file 'context.xml' --> <?xml version="1.0" encoding=" ...

  9. iOS Sprite Kit教程之xcode安装以及苹果帐号绑定

    iOS Sprite Kit教程之xcode安装以及苹果帐号绑定 其它的网站上下载安装Xcode 有时候,应用商店下载较慢,所以用户也可以选择从其他网站下载Xcode安装文件.下面讲解这种Xcode的 ...

  10. python orm字段解析

    null # 是否可以为空 default # 默认值 primary_key # 主键 db_column # 列名 db_index # 索引(db_index=True) unique # 唯一 ...