Android源码之使用linux内核源代码
来源:互联网 发布:阿里云ued 编辑:程序博客网 时间:2024/06/05 03:47
这篇主要记录一下如何下载linux内核源码,并编译使用。
首先下载源码:在安卓源码目录下新建kernel目录:
mkdir kernel然后运行git clone命令:
git clone http://android.googlesource.com/kernel/goldfish.git这里goldfish为模拟器用的内核。但是如果之前下载过安卓源码,并使用身份认证(即在~/目录下新建.netrc,并将用户名密码信息保存其中),运行这条命令后可能会出现如下error:
fatal: remote error: SSL is required那这个主要就是因为:之前使用了Authentication方式,而这里使用了HTTP方式,在Authentication方式下,必须使用https方式,那么将上面那个命令稍作修改:
git clone https://android.googlesource.com/kernel/goldfish.git
加个s就好啦。OK,拉的时间比较长,先记录到此~~。
当然拉完后要记得 git branch -b 切换分支喔,这里选用的是 android-goldfish-2.6.29内核。
OK,拉的时间比较长,不过我后来找了个朋友直接在这个网站上下载下来了:
https://android.googlesource.com/kernel/goldfish/+archive/android-goldfish-2.6.29.tar.gz他那儿是特殊环境,虽然是 Google 服务器,下载速度也是一流,我自己把代码都打包放在我的CSDN资源里,有需要的同学可以去我的资源里面下载,有2.6,3.4和3.10的版本,各取所需即可~~
下载完成后,就要开始编译内核了,编译的步骤比较简单:
1、首先将 gcc 加入环境变量,这里的 gcc 可不是系统自带的 gcc,而是专门编译安卓系统用的,目录在 prebuild 目录下,不过android5.0的跟之前有点差别:他的目录是:prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin,之前的都是prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin2、打开 kernel 目录下的 MakeFile 文件,修改 # ARCH ?= (SUBARCH) # CROSS_COMPILE?= ARCH ?= arm CROSS_COMPILE ?= arm-eabi-此处注意 tab 键喔,最好是直接复制那两行,拷贝再修改。3、安卓4.0之后编译命令为:make goldfish_armv7_defconfigmake4.0之前的编译命令:make goldfish_defconfigmake
编译完后会在arch/arm/boot目录下生成 zImage 文件,这样内核就编译完成了。
编译完成后,根据之前的那篇文章,我在虚拟机中运行 emulator 比较卡,就使用 mac 下的sdk 的 ADT 代替,那我们这边就把生成的 zImage 文件也替换到 sdk 的 system-image 目录下,注意的是,在这个目录下,它的内核镜像文件名是:kernel-qemu,所以我们也要把 zImage 重命名为 kernel-qemu 即可。
但是,这里遇到一个问题,上面我拉的 kernel 源码是2.6.29的 goldfish 源码,生成这个 zImage 镜像替换后,重新打开 ADT 启动模拟器时一直黑屏,连开机的动画都没有,在网上查了查资料,发现也有人遇到这样的问题,说是换用新版本的 kernel 源码就可以了,所以我就又直接拉了最新的3.10的源码,编译完成,替换后发现,还是不行,后面又上网查,发现原来,这个是 kernel 3.10的一个 BUG。。。似乎还没有修复,没办法,我只好用了中间的那个版本:3.4,编译完成后,替换 zImage 镜像,成功开机:
- Android源码之使用linux内核源代码
- android 4.0 源代码、内核源码下载
- Linux内核剖析 之 Linux源代码组成
- Linux内核源码学习之 内核编译
- 关于Linux内核源码使用
- Linux 3.3内核发布 融合Android源代码
- 使用git获取Linux的内核源代码
- Linux内核开发:使用 Git 管理源代码
- android驱动之旅-下载编译Linux Kernel 源代码 for Android 以及android源码(2)
- linux内核源码总览之一---------源代码目录结构说明
- pandaboard ES学习之旅——5 Android Linux内核源代码下载与编译
- linux内核奇遇记之md源代码解读之二
- linux内核奇遇记之md源代码解读之三
- linux内核奇遇记之md源代码解读之四
- linux内核奇遇记之md源代码解读之五
- linux内核奇遇记之md源代码解读之六
- linux内核奇遇记之md源代码解读之二
- linux内核奇遇记之md源代码解读之三
- 也许一个人成熟的标志,就是对别人的痛苦毫不关心
- PAT(A) 1084
- 什么是挂载?
- java基础-各种规则
- HDU_4004_The frog's game_二分搜索
- Android源码之使用linux内核源代码
- http请求中常用请求头和响应头代表的含义
- ZOJ 3791
- 直接拿来用!十大Material Design开源项目
- eclipse jee中创建Maven project并且转换为Dynamic web project
- java基础-循环和数组
- 死锁及如何处理死锁
- 代理传值
- 我们的征途是星辰大海