编译安卓源码以及下载Android内核

         现在开始研究安卓framework层 以及了解整个Android的系统架构 ;

那首先第一步就是去下载安卓源代码了,具体可以参考谷歌官方文档下载源代码:http://source.android.com/source/downloading.htm

如果省时间可以直接拿人家已经下载好了的源码来进行编译即可

链接:http://pan.baidu.com/s/1jIeyXds
密码:ij7x
这里有android-6.0.1_r43,从清华镜像拖下来的。成功编译。

建议如果Ubuntu14以上出现严重的错误的话 可以装Ubuntu12.04  我觉得 成功率要高点!

好了 如果有源码了就可以开始编译了

执行以下命令:

1  sudo apt-get install gnupg flex bison gperf libsdl1.2-dev libesd0-dev 


2 sudo apt-get install libwxgtk2.6-dev squashfs-tools build-essential


3 sudo apt-get install zlib1g-dev pngcrush schedtool ia32-libs libncurses5-dev

那后直接到源码目录 执行 make命令

中途可能会出现一些错误

可以参考这个链接:http://www.linuxidc.com/Linux/2011-07/38430.htm

大概两个小时左右就可以编译完成了(我编译的是2.3的源码)

编译完之后会在out/target/product/generic目录下生成system.img ramdisk.img userdata.img三个镜像文件。


在启动模拟器之前,需要先为模拟器系统设置环境变量,执行gedit ~/.bashrc,新增环境变量如下:
    export ANDROID_PRODUCT_OUT=~/Android/source/out/target/product/generic  
    ANDROID_PRODUCT_OUT_BIN=~/Android/source/out/host/linux-x86/bin  
    export PATH=${PATH}:${ANDROID_PRODUCT_OUT_BIN}:${ANDROID_PRODUCT_OUT};  
最后,同步这些变化并启动模拟器:
    $ source ~/.bashrc  
    $ cd ~/Android/source/out/target/product/generic  
    $ emulator -system system.img -data userdata.img -ramdisk ramdisk.img  

加载上我们所编译出来的系统文件,终于出现了期待已久的模拟器.

到这里,源码编译就完成了,接下来就可以进行自己的改动测试了

再来第二步 下载安卓内核;

从源代码树下载下来的最新Android源代码,是不包括内核代码的,也就是Android源代码工程默认不包含Linux Kernel代码,而是使用预先编译好的内核,也就是prebuilt/android-arm/kernel/kernel-qemu文件 

首先再源码主目录 创建kernel文件夹,再执行以下命令:

xielinhua@ubuntu:~/Downloads/Android/kernel$ git clone https://android.googlesource.com/kernel/common.git kernel

要经过漫长的等待····~~~~~~~~~~~~~~~~~~~~~~~~~~~才能下载完  大哭

 当内核源码下载完成之后 调用以下命令:

git checkout remotes/origin/android-gldfish-2.6.29

然后再gldfish目录下会有好多文件 打开目录下的 makefile文件 修改以下值:


把红线中的换成 蓝线里面的 也就是

.Makefile文件的以下两行为:
      # ARCH ?= (SUBARCH)
      # CROSS_COMPILE?= 
      ARCH                            ?= arm
      CROSS_COMPILE     ?= arm-eabi-

修改好了的话再设置环境

export PATH=$PATH:~Drown/Android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin

到此就可以开始编译内核了,执行以下命令:

make goldfish_defconfig

再执行 make 大概两分钟就编译完成了

最后会出现如下图片:


到此内核编译完成!  现在开始把内核打包进以前编译好的源码中 启动模拟器执行:

先配置下环境变量

xielinhua@ubuntu:~$ export PATH=$PATH:~/Downloads/Android/out/host/linux-x86/bin/
xielinhua@ubuntu:~$ export ANDROID_PRODUCT_OUT=~/Downloads/Android/out/target/product/generic/

然后就可以打开我们刚才编译好内核的模拟器了

xielinhua@ubuntu:~/Downloads/Android$  emulator -kernel ./kernel/goldfish/arch/arm/boot/zImage &

最后如图:



最后来验证一下是不是我们刚才编译的内核:

xielinhua@ubuntu:~/Downloads/Android$ adb shell
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
error: device offline
xielinhua@ubuntu:~/Downloads/Android$ adb shell
# cd proc
# cat version
Linux version 2.6.29-g4bb8fa0-dirty (xielinhua@ubuntu) (gcc version 4.4.3 (GCC) ) #1 Tue Jun 28 15:28:56 CST 2016


Linux version 2.6.29-g4bb8fa0-dirty  好了 是我们刚才的内核!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值