• Android深度探索(卷1)HAL与驱动开发学习笔记(4)


    Android深度探索(1)HAL与驱动开发学习笔记(4

    第四章  源代码的下载与编译

    一、源代码配置Android源代码下载环境

    1.建一个用于存放下载脚本文件(repo)的目录

    # mkdir ~/bin

    # PATH=~bin:$PATH

    2.下载repo脚本文件

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

    #chmod a+x ~/bin/repo

    3.创建用于存放Android源代码的目录

    # mkdir android_reource

    # cd android_source

    4.初始化

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

    //下载master分支

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

    //下载其他分支

    5.开始下载Android源代码

    # repo sync

    下载一部分Android源代码

    方法1  使用repo sync命令

    # repo sync platform/bootable/recovery

    方法2  使用git clone 命令

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

    二、安卓源代码目录结构解析

    除了Makefile文件外,其余都为目录

    |-- Makefile

    |-- abi             (应用程序二进制接口)

    |-- bionic               bionic C库)

    |-- bootable            (启动引导相关代码)

    |-- build                 (存放系统编译规则及generic等基础开发包配置)

    |-- cts                    Android兼容性测试套件标准)

    |-- dalvik                dalvik Java虚拟机)

    |-- development      (应用程序开发相关)

    |-- external             android使用的一些开源的模组)

    |-- frameworks       (核心框架——javaC++语言)

    |-- hardware           (主要保护硬解适配层HAL代码)

    |-- libcore               (JAVA核心库)

    |-- ndk                  (NDK相关源代码)

    |-- device                 (设备相关代码)

    |-- out                   (编译完成后的代码输出与此目录)

    |-- packages           (应用程序包)

    |-- prebuilt             x86arm架构下预编译的一些资源)

    |-- sdk                   sdk及模拟器)

    |-- system              (文件系统库、应用及组件——C语言)

    |-- vendor              (厂商定制代码)

    三、编译Android源代码

    1.初始化编译环境

    # source build/envsetup.sh

    # . build/envsetup.sh  //主要用来初始化一些编译命令

    2.选择目标

    # lunch full-eng  //表示对所有的移动设备,Android模拟器有效并打开所有调试选项

    3.编译Android源代码

    # make      //编译

    四、out 目录结构分析

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

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

    五、下载和编译Linux 内核源代码

    # git clone https://android.googlesourse.com/kernel/common.git   //下载最新版的内核源代码

    # git branch -a         //查看有哪些远程版本库

    # git check out -b android-3.0 remotes/origin/android-3.0    //导出Linux3.0的内核

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

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

    六、Linux内核源码目录

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

    block: 部分块设备驱动

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

    Documentation

    drivers:设备驱动程序,每个不同的驱动占用一个子目录,如charblocknetmtdi2c等。

    fs:支持各种文件系统,如EXTFATNTFSJFFS2

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

    init:内核初始化代码。

    ipc:进程间通信的代码

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

    lib:库文件代码。

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

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

    scripts:用于配置内核的脚本文件。

    security:主要是一个SELinux的模块。

    sound:ALSAOSS音频设备的驱动核心代码和常用设备驱动

    usr:实现了用于打包和压缩的cipo等。

    七、安装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

    1. 安装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

     

     

     

     

  • 相关阅读:
    MySQL索引类型
    Spring+Quartz框架实现定时任务(集群,分布式)
    搭建Nginx+Java环境(转)
    windows环境下将csv文件导入mysql
    哈利波特折扣
    第二阶段个人总结06
    第二阶段个人总结05
    第二阶段个人总结04
    第二阶段个人总结03
    学习进度条——第13周
  • 原文地址:https://www.cnblogs.com/zhangnene/p/5430338.html
Copyright © 2020-2023  润新知