anroid源码下载和编译
本文是在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的版本了
参考文献:
5. http://android.git.kernel.org/
anroid源码下载和编译的更多相关文章
- android源码下载以及编译自己的ROM
android源码下载以及编译自己的ROM 最近发现kernel.org被墙了,为什么这种网站也能被墙了? 要想下载源码的话,只能绕过去了.下面是我从网上搜索到的一些下载方法: =========== ...
- Harmony OS 开发避坑指南——源码下载和编译
Harmony OS 开发避坑指南--源码下载和编译 本文介绍了如何下载鸿蒙系统源码,如何一次性配置可以编译三个目标平台(Hi3516,Hi3518和Hi3861)的编译环境,以及如何将源码编译为三个 ...
- springFramework 源码学习之源码下载与编译
1.源码下载 Spring已经将源码从svn迁移到了git.对于习惯了svn的人来说依然可以svn checkout,最好checkout到英文路径下,本人中文路径编译不过,具体原因不明,路径: ht ...
- [原创]Nexus5 源码下载、编译、真机烧录过程记录
asop使用清华镜像源https://mirror.tuna.tsinghua.edu.cn/help/AOSP/ 一开始使用每月初始化包的方式因为无法搞定版本的问题,没能通过编译,无奈,老老实实一点 ...
- Android 7.1.1系统源码下载、编译、刷机-Nexus 6实战
想成为一位合格的Android程序员或者一位Android高级工程师是十分有必要知道Android的框架层的工作原理,要知道其工作原理那么就需要阅读Android的源代码. 想要阅读Android的源 ...
- openwrt(一):openwrt源码下载及编译环境搭建
声明:从网上各位大神的博客学习,整理后记录,非原创. 注:请用非root用户来下载源码 导航: 1. openwrt编译环境搭建 2. openwrt源码下载 3. feeds更新 1. openwr ...
- openwrt开发笔记一:源码下载与编译
1.1 环境要求 编译系统:Linux发行版(本文使用Ubuntu) 编译一个可以安装的OpenWrt固件镜像文件(大约8MB大小的),你需要: 一个纯净的OpenWrt编译系统大约需要200MB的空 ...
- WebRTC源码开发(一)MacOS下源码下载、编译及Demo运行
工作需要测试网络传输算法,逐学习WebRTC源码 工作环境 Mac OS 10.14 Xcode 10.2.1 源码下载 从google(需要[你懂的]) 首先[你懂的] 打开终端,输入curl ww ...
- Android学习系列(38)--Android源码下载和编译
前面多篇文章介绍到如何下载和编译Android或者CM源码,不过一直都是放在<拓展系列>里.随着学习的深入,android源码是非常有参考和学习价值,强烈推荐大家都去下载,编译,学习,所以 ...
随机推荐
- wordpress后台进去空白怎么办?
最近博客换成了用wordpress程序搭建,内容和版面也重新设计.经常使用FTP工具,更改模板或者其他程序文件.由于对wordpress不太了解,竟然出现了wordpress后台进去空白的问题,而前台 ...
- echarts3.0 本期累计堆叠
@{ ViewBag.Title = "barlj"; } <h2>barlj</h2> <div id="main" style ...
- 【AtCoder】AGC005F - Many Easy Problems
题解 我们把一个点的贡献转化为一条边的贡献,因为边的数量是点的数量-1,最后再加上选点方案数\(\binom{n}{k}\)即可 一条边的贡献是\(\binom{n}{k} - \binom{a}{k ...
- USACO 5.2 Snail Trails
Snail TrailsAll Ireland Contest Sally Snail likes to stroll on a N x N square grid (1 <n <= 12 ...
- lr参数化取值与连接数据库
TXT文本,EXCEL表格以及数据库中的表都可以作为参数的数据集载体,LR都是支持的. 特别提醒: 1.在形成数据池之后,数据库中的数据变化不会影响数据池中的数据. 2.数据文件一定要以一个空行结束, ...
- hdoj1102 Constructing Roads(Prime || Kruskal)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1102 题意 有n个村庄(编号1~n),给出n个村庄之间的距离,开始时n个村庄之间已经有了q条路,现在需 ...
- POJ - 3111 K Best 0-1分数规划 二分
K Best Time Limit: 8000MS Memory Limit: 65536K Total Submissions: 12812 Accepted: 3290 Case Time ...
- spring 事务配置
事务配置文档xml <!-- from the file 'context.xml' --> <?xml version="1.0" encoding=" ...
- iOS Sprite Kit教程之xcode安装以及苹果帐号绑定
iOS Sprite Kit教程之xcode安装以及苹果帐号绑定 其它的网站上下载安装Xcode 有时候,应用商店下载较慢,所以用户也可以选择从其他网站下载Xcode安装文件.下面讲解这种Xcode的 ...
- python orm字段解析
null # 是否可以为空 default # 默认值 primary_key # 主键 db_column # 列名 db_index # 索引(db_index=True) unique # 唯一 ...