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

  • 相关阅读:
    scrapy高级操作
    scrapy多url爬取
    scrapy基础使用
    selenuim
    数据解析
    python字典转为对象,用"."方式访问对象属性
    python AES.MODE_ECB(128位) pkcs5padding 加密算法
    maven
    maven在idea中的配置
    idea使用技巧
  • 原文地址:https://www.cnblogs.com/orange921/p/5453342.html
Copyright © 2011-2022 走看看