下载并编译Android kernel的指定版本源代码
来源:互联网 发布:不会编程能学数据库吗 编辑:程序博客网 时间:2024/05/01 08:42
下面以下载Android内核源码android-2.6.39为例:https://android.googlesource.com/kernel/common.git
环境:虚拟机中ubuntu系统
一、下载kernel源码:
1、创建repo文件夹:mkdir /Android/kernel/goldfish&& cd /Android/kernel/goldfish
2、初始化git:git init
3、下载源码:git clone https://android.googlesource.com/kernel/goldfish.git
4、查看所有分支:git branch -a
5、在本地创建并checkout指定分支:git checkout -b goldfish-2.6.29 goldfish/android-goldfish-2.6.29
二、下载交叉编译工具:
6、下载交叉编译工具:git clone git://github.com/DooMLoRD/android_prebuilt_toolchains.git /Android/toolchains
三、设置环境变量:
7、临时设置环境变量:export PATH=$PATH:/Android/toolchains/arm-linux-androideabi-4.7/bin
8、或长久设定环境变量:gedit ~/.bashrc
增加如下两行:
export PATH=$PATH:/Android/toolchains/arm-eabi-linaro-4.6.2/bin
export ARCH=arm
保存后,同步变化:source ~/.bashrc
四、设定交叉编译参数:
9. 打开goldfish目录下的Makefile文件并编辑:ARCH ?= $(SUBARCH) 改为: ARCH ?= arm
10. 把CROSS_COMPILE指向刚才下载的prebuilt中的arm-eabi编译器:CROSS_COMPILE ?= arm-eabi-
这个旨在告诉make,在编译的时候要使用我们的工具链。
11. 把LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,/
$(call ld-option, -Wl$(comma)–build-id,))
把这一行注释掉,并且添加一个空的LDFLAGS_BUILD_ID定义,如下: LDFLAGS_BUILD_ID =
把它注释掉的原因是目前android的内核还不支持这个选项。--build-id选项,主要是用于在生成的elf可执行文件中加入一个内置的id,这样在core dump,或者debuginfo的时候就可以很快定位这个模块是哪次build的时候弄出来的。这样就可以避免,每次都把整个文件做一遍效验,然后才能得到该文件的是由哪次build产生的。对于内核开发者来说,这是很不错的想法,可以节约定位模块版本和其影响的时间。
目前,该功能还出于early stage的状态,未来的android或许会支持,但至少目前的版本是不支持的。所以,用#注释掉即可,或者害怕不保险的话,就加入LDFLAGS_BUILD_ID=空,这样即使编译的时候用了,也只是一个空格而已。
五、编译内核
$ cd /Android/kernel/goldfish
$ make goldfish_defconfig
$ make
六、测试生成的内核映像
12、下载Android (SDK)ADT bundle:http://developer.android.com/sdk/index.html
13、加入PATH变量:export PATH=$PATH:/Android/sdk/adt-bundle-linux-x86-20130917/sdk/platform-tools:/Android/sdk/adt-bundle-linux-x86-20130917/sdk/tool
14、cd /Android/sdk/adt-bundle-linux-x86-20130917/sdk/tool && ./emulator -avd myavd -kernel /Android/kernel/goldfish/arch/arm/boot/zImage
其中:第3步容易出现fetch出错问题,可以设置goagent proxy后进行重试。
参见blog.csdn.net/dgq227/article/details/12004685 和 blog.csdn.net/dgq227/article/details/11990229
注:
检出仓库: $ git clone git://github.com/jquery/jquery.git
查看远程仓库:$ git remote -v
添加远程仓库:$ git remote add [name] [url]
删除远程仓库:$ git remote rm [name]
修改远程仓库:$ git remote set-url --push [name] [newUrl]
拉取远程仓库:$ git pull [remoteName] [localBranchName]
推送远程仓库:$ git push [remoteName] [localBranchName]
Reference:
http://blog.csdn.net/ithomer/article/details/7529841 (git常用命令速查表)
http://blog.csdn.net/ithomer/article/details/7529022 (git常用命令详解)
http://blog.csdn.net/ithomer/article/details/7530042 (git绕墙方法介绍)
http://gitref.org/zh/remotes/ (git参考手册)
http://blog.csdn.net/chizhaolin/article/details/5721539 (下载编译android kernel)
http://forum.xda-developers.com/showthread.php?t=1748297 (编译你的第一个kernel)
- 下载并编译Android kernel的指定版本源代码
- Android源代码Linux Kernel下载及编译
- 下载 编译 Android源代码 和 Android kernel源代码
- 下载android kernel内核,并编译。
- 下载并编译Android内核源代码
- 如何下载Android kernel内核源代码,编译烧写验证
- 下载和编译Linux Kernel for Android源代码
- 下载android 源码对应的kernel版本
- 下载android 源码对应的kernel版本
- 下载编译android kernel
- 下载编译android kernel
- Android Kernel下载编译
- [Android]Kernel的下载和编译
- 【Android 系统开发】下载 编译 Android源代码 和 Android kernel源代码
- android 各个版本的源代码下载地址
- 下载并编译CyanogenMod源代码
- git获取Android指定版本的kernel内核
- android驱动之旅-下载编译Linux Kernel 源代码 for Android 以及android源码(2)
- 三角形马赛克简单教程
- poj1423 Big Number
- java名字的由来
- 11gr2 rman异机恢复。
- 疑难总结——1
- 下载并编译Android kernel的指定版本源代码
- Oracle_用存储过程杀掉session解决锁表的问题
- cg编程之 Shader Language原理
- zencart批量添加特价产品,修改特价产品价格
- 如何在eclipse的WEB-INF文件夹下生成class文件夹
- Extjs 轮询方式聊天功能
- poj2409
- 触发器、存储过程、表变量、临时表
- CSDN博客贴代码如何快速排版规范