• 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的版本了

     

    参考文献:

    1. android内核编译方法

    2.下载编译android kernel

    3. android内核编译方法

    4. git-clone指定branch

    5. http://android.git.kernel.org/

  • 相关阅读:
    什么叫大数据,与云计算有何关系
    未来机器时代 马云担心的居然是男性找不到工作
    浏览器原生登陆验证实现
    eclipse-java-style.xml
    tomcat和应用集成
    简单springboot及springboot cloud环境搭建
    maven module
    maven scope
    java ReentrantLock Condition
    抓取动态网页
  • 原文地址:https://www.cnblogs.com/liangxiaofeng/p/3474603.html
Copyright © 2020-2023  润新知