zoukankan      html  css  js  c++  java
  • 怎样下载并编译Android4.0内核源代码goldfish(图文)

    关于怎样下载Android4.0源代码,请查看我的博客内还有一篇文章(相同是图文教程):

    http://blog.csdn.net/flydream0/article/details/7036156

    怎样编译Android4.0源代码请看:

    http://blog.csdn.net/flydream0/article/details/7046612


    以下进入正题:

    第一步:下载goldfish源代码

    在Android源代码根文件夹下新建kernel文件夹

    $mkdir kernel
    $cd kernel
    下载源代码:

    $git clone http://android.googlesource.com/kernel/goldfish.git 

    完成下载例如以下图:

    此时在kernel文件夹下会生成一个goldfish文件夹。进入此文件夹:

    $cd goldfish

    此文件夹下有一个隐藏的文件夹.git,通过

    $ls -al

    可看到此文件夹:


    查看全部分支:

    git  branch -a
    例如以下图:


    check out:

    $git checkout remotes/origin/android-goldfish-2.6.29


    此时你会看到goldfish文件夹下会出现非常多文件:

    $ls

     这个时候goldfish源代码就已经下下来了,接下来的事情就是编译了.


    第二步:编译goldfish

    导出交叉编译工具文件夹到$PATH环境变量中去.

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

    我们将使用上述这个文件夹下的交叉编译器arm-eabi-gcc

    然后在glodfish文件夹下用gedit打开Makefile文件,找到这两行文字:

     # ARCH ?= (SUBARCH)

     # CROSS_COMPILE?=
    改动为:
    ARCH ?= arm
    CROSS_COMPILE     ?= arm-eabi-
    $gedit Makefile

    注意:ARTH ?=arm,的arm后边不要有空格,不然就会出现例如以下类似错误:
    Make:...../kernel/goldfish/arch/arm: Is a directory.  Stop.
    害我白白浪费了几个小时.

    上述操作的目的是为了指定目标设备的体系架构和交叉编译器,事实上也能够通过下面指令来完毕:
    $ export ARCH=arm
    $ export SUBARCH=arm
    $ export CROSS_COMPILE=arm-eabi-


    为了确保环境參数正确,接下来运行以下两条指令,否则有可能不能正常启动模拟器.(注:以下两条指令是在Android源代码根文件夹下运行)
    $ source build/envsetup.sh  //缺少这条指令,可能会导致无法编译通过
    $ lunch full-eng            //缺少这条指令,可能会导致无法启动模块器,系统报无法找到AVD,并要求你创建AVD。

    关闭gedit,接下来就開始make了,运行例如以下指令:
    $ make goldfish_armv7_defconfig
    $ make
    
    注:用$make goldfish_defconfig这样配置也能够编译通过,模拟器也能够启动,可是Android的开机画机就显示不了,$adb shell也死活连不上,原因就是这个goldfish_defconfig这个配置文件问题.

    提示:
    $make goldfish_armv7_defconfig指令的意思是将文件夹WORKING_DIRECTORY/kernel/goldfish/arch/arm/configs/下的goldfish_armv7_defconfig文件内的Kconfig配置内容拷贝到WORKING_DIRECTORY/kernel/goldfish/文件夹下的.config文件里,.config文件是一个隐藏文件夹,保存着各个文件夹下Kconfig文件的配置.
    终于结果例如以下图所看到的:


    这样就表示编译成功了.

    $ ls arch/arm/boot/
    
    能够看到zImage文件.


    第三步:在模拟器中启动编译好的内核
     
    按下来再执行其下指令:
    $ export PATH=$PATH:~/WORKING_DIRECTORY/out/host/linux-x86/bin
    $ export ANDROID_PRODUCT_OUT=~/WORKING_DIRECTORY/out/target/product/generic
    $ emulator -kernel ~/WORKING_DIRECTORY/kernel/goldfish/arch/arm/boot/zImage & 
    
    模拟器启动界面:



    进入模拟器从设置里看版本号信息:

    从上图能够看出当前Android版本号是4.0.1,内核版本号是2.6.29,说明成功了.

    相同也能够通过adb shell来查看内核版本号信息,例如以下图:

    $adb shell
    #cd proc
    #cat version
    


    完!

  • 相关阅读:
    Hadoop集群(三) Hbase搭建
    Hadoop集群(二) HDFS搭建
    Hadoop集群(一) Zookeeper搭建
    Redis Cluster 添加/删除 完整折腾步骤
    Redis Cluster在线迁移
    Hadoop分布式HA的安装部署
    Describe the difference between repeater, bridge and router.
    what is the “handover” and "soft handover" in mobile communication system?
    The main roles of LTE eNodeB.
    The architecture of LTE network.
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4344064.html
Copyright © 2011-2022 走看看