zoukankan      html  css  js  c++  java
  • 源代码的下载和编译

     

    4.1下载编译和测试源代码

    Android源代码由很多东西组成,一种是Android系统应用程序的代码,android SDK带的各种工具,android NDK的源代码,HAL源代码。

    1.配置Android源代码下载环境

    在下载Android源代码之前必须要在Linux终端执行一系列命令来配置下载环境。

    第一步:创建一个用于存放下载脚本文件(repo)的目录

    #  mkdir  ~/bin

    #  PATH=~/bin:$PATH

    第二步:下载repo脚本文件

    # curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo  >  ~/bin/repo

    # chmod a+x  ~/bin/repo(repo是用python对Git的一个封装,简化下载android源代码的操作)

    第三步:创建用于存放Android源代码的目录

    #  mkdir android_source

    #  cd  android_source

    第四步:初始化

    #  repo  init  -u https://android.googlesource.com/platform/manifest   -b  android-4.0.1_rl

    第五步:开始下载Android源下载过程中网络几乎做不了其他的事情代码

    #  repo  sync

    执行上面的命令后,会现实一些信息然后开始下载Android源代码,接下来是漫长的等待,按国内大多数人能达到的网速,至少要4个小时才能下完。

    下载一部分Android源代码

    方法1  使用repo sync命令

    # repo sync platform/bootable/recovery

    方法2  使用git clone 命令

    # git clone http://android.googlesourse.com/<project name>

    2编译Android源代码

    第一步:初始化编译环境

    #    source  build/envsetup.sh

    #   .   build/envsetup.sh

    第二步:选择目标

    #  lunch  full-eng

    第三步:编译Android源代码

    #  make –j4

    不仅下载Android源代码需要较长时间,完全编译Android源代码也需要很长的时间。当编译完成后,会在Android源代码根目录中生成一个out目录。

    Out 目录是存放编译Android源代码生成的目标文件的默认目录

    -- target(表示目标机,如果编译时候定义TARGET_STRIP_MODULE=false的话,这个目录为debug/target) 主要的两个目录为host和target,前者表示在主机(x86)生成的工具,后者表示目标机(默认为ARMv5)运行的内容。

    4.2下载和编译linux内核源代码

    下载最新版的内核源代码

    # git clone https://android.googlesourse.com/kernel/common.git

    查看有哪些远程版本库

    # git branch -a

    导出Linux3.0的内核

    # git check out -b android-3.0 remotes/origin/android-3.0

    下载该内核

    # git clone http://android,googlesourse.com/kernel/goldfish.git 

    导出goldfish

    # git checkout -b android-goldfish-2.6.29 remotes/origin/android-goldfish-2.6.29

    Linux内核源码目录

    arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录。

    block: 部分块设备驱动

    crypto:常用加密和散列算法(如AES、SHA等),还有一些压缩和CRC校验算法。

    Documentation

    drivers:设备驱动程序,每个不同的驱动占用一个子目录,如char、block、net、mtd、i2c等。

    fs:支持各种文件系统,如EXT、FAT、NTFS、JFFS2等

    include:头文件,与系统相关的头文件放置在include/linux子目录下。

    init:内核初始化代码。

    ipc:进程间通信的代码

    kernel:内核的最核心部分,包括进程的调度、定时器等,而和平台相关的一部分代码放在arch/*/kernel目录下。

    lib:库文件代码。

    mm:内存管理代码,和平台相关的一部分代码放在arch/*/mm目录下。

    net:网络相关代码,实现了各种常见的网络协议。

    安装Android内核的编译环境

    1.将arm-linux-gcc-4.3.2.tgz文件和arm-none-linux-gnueabi-arm-2008q3-72-for-linux.tar,bz2文件复制到工作目录

    2.解压上面的两个文件

    3.验证交叉编译器是否安装成功

    # ls /user/local/arm -1

    4.安装libncurses5

    # apt-get install libncurses5-dev

    配置和编译Linux内核

    # export PATH=/root/compilers/arm-none-linux-gnueabi/bin:$PATH

    #cd ~/linux_kernel

    #make clean

    #make

    在Linux源代码目录执行以下四个配置命令

    Make config

    Make manuconfig

    Make oldconfig

    Make xconfig

    成功编译Linux内核后,会在<Linux内核源码目录>/arch/arm/boot目录生成一个zlmage文件,该文件是Linux内核的二进制版本,可以直接使用zlmage安装到开发版上,也可以通过命令在Android模拟器中进行测试。

    # emulator -avd myavd -kernel /root/kernel/goldfish/arch/arm/boot/zlmage

  • 相关阅读:
    CF 461B Appleman and Tree
    POJ 1821 Fence
    NOIP 2012 开车旅行
    CF 494B Obsessive String
    BZOJ2337 XOR和路径
    CF 24D Broken robot
    POJ 1952 BUY LOW, BUY LOWER
    SPOJ NAPTIME Naptime
    POJ 3585
    CF 453B Little Pony and Harmony Chest
  • 原文地址:https://www.cnblogs.com/orange921/p/5453342.html
Copyright © 2011-2022 走看看