本文是在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. 为django的python manage.py加自定义命令

    计划在开发软件的过程中, 每次可以自己加入测试数据,这样就可以每次作全新的测试了. 将这个初始化django modules数据命令,将在manage.py里是最合适的. 下面我们就来实现吧. 参考文 ...

  2. js与jquery的动态加载脚本文件

    jquery动态加载 jQuery.getScript(url,[callback]) js动态加载 function loadJs(name) { document.write('<scrip ...

  3. Smart Pointer 智能指针

    P76 参考:http://www.cnblogs.com/lanxuezaipiao/p/4132096.html http://blog.csdn.net/hackbuteer1/article/ ...

  4. 今日头条高级后端开发实习生三轮技术面+HR面 面经

    二面结束后已经意识模糊,好多问过的东西都忘了,而且有一些基础知识就不在这写了,大部分公司都问的差不多... 一面(2018/03/27,11:00~11:50) 1:自我介绍 2:简单说说你这个项目吧 ...

  5. ACM 水果 hdu 1263 一题多解

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1263 文章末有相应的一些测试数据供参考. 传统的数组解题方式 思路一: 三种属性的数据放在一个结构体里面, ...

  6. 微服务:如何优雅的使用Mybatis

    个人比较喜欢 jpa 这种极简的模式,但是为了项目保持统一性技术选型还是定了 mybatis.到网上找了一下关于 spring boot 和 mybatis 组合的相关资料,各种各样的形式都有,看的人 ...

  7. 我的vim配置脚本

    自己的VIM 配置脚本,拥有自主独立知识产权(参考了一点别人的),只使用了一个插件ctags ,主要实现了一下功能: 自动补全括号,双引号,单引号,包括{},(),"" , ''只 ...

  8. Windows系统php5.6安装Imagick库

    Windows上的安装坑比较多 1.安装Imagick,需要下载6.9.3之下版本的 http://imagemagick.org/script/download.php 官网都是新版本不可以用 我安 ...

  9. luoguP4466 [国际集训队]和与积 莫比乌斯反演

    自然想到枚举\(gcd(a, b)\),不妨设其为\(d\),并且\(a = di, b = dj(a > b)\) 那么\(\frac{ab}{a + b} = \frac{dij}{i + ...

  10. Linux下rz,sz与ssh的配合使用,实现文件传输

    一般来说,linux服务器大多是通过ssh客户端来进行远程的登陆和管理的,使用ssh登陆linux主机以后,如何能够快速的和本地机器进行文件的交互呢,也就是上传和下载文件到服务器和本地:    与ss ...