Android探索与驱动开发学与思(4)

涉及到源代码,及上一章所学的git下载的两套源代码,一套是Android源代码,全部下载将近4GB大小,其含金量可想而知。另一套是Android核心部分的linux内核源代码,解压之后几百MB。
 首先我们学习下载、编译、和测试Android源代码。
 1.配置Android源代码下载环境
  (1)创建一个用于存放下载脚本文件(repo)的目录
  (2)下载repo脚本文件
  (3)创建用于存放Android源代码的目录
  (4)初始化
  (5)开始下载Android源代码
Android源代码目录结构分析
下载Android源代码中的一部分
  下载Android源代码中的某个项目有两种方法:方法一、使用repo sync命令  方法二、使用git clone 命令
编译Android源代码
 第一步:初始化编译环境 第二步:选择目标  第三步:编译Android源代码
Out目录结构分析
将自己的APK作为Android内置程序发布
用模拟器测试System.img文件
第二部分我们学下载和编译linux内核源代码
下载linux内核源代码
Linux内核源代码的目录结构
安装Android内核的编译环境
  第一步:准备工作 第二步:解压编译器 第三步:验证交叉编译器是否安装成功  第四步:安装libncurses5
配置和编译linux内核
下载、编译linux内核源代码
    在此之前,我们已经接触过linux内核:尤其是内核编译,因此此处相对于我们而言是容易理解的。
    内核编译:1.下载linux内核源代码:git clone https://android.goolesource.com/kernel/common.git;2.在当前目录进入common目录:git branch -a【查看当前有哪些远程版本库】;3.导出最新的linux内核:git checkout -b android-3.0 remotes/origin/android-3.0;4.下载相应的内核:git clone               http://android.goolesource.com/kernel/goldfish.git;5.进入goldfish目录,导出goldfish:git checkout -b android-goldfish-2.6.29 remotes/origin/android-goldfish-2.6.29.
                2.了解linux内核源代码的目录结构:详见【《嵌入式linux应用程序开发》或者《android深度探索 卷1》】其中:arch目录:与CPU架构相关的源代码和配置文件。init:初始化内核程序的实现代码。samples:一些内核编程的实例等等。
                3.安装内核编译环境:交叉编译环境,最开始老师亲自带我们安装过交叉编译环境,但是我仍然失败了,主要原因就是对于其中的很多知识或者代码的应用并不是很熟练。此前,第二章已经介绍过如何安装交叉编译环境,此处,我们需要了解,在编译linux内核之前,需要配置linux的Makefile文件:ARCH    ?=arm[以便于在ARM结构上运行]以及CROSS_COMPILE【交叉编译器前缀】?=arm-none-linux-guneabi-.
                4.配置和编译linux内核:假设linux内核目录:/root/linux_kernel,那么我们使用如下命令:
                export PATH=/root/complilers/arm-none-linx-guneabi/bin:$PATH
                 cd ~/linux_kernel
                 make clean【清除大多数由编译生成的文件.ko等,但保留配置文件】
                 make
                 除了make clean外,还有两个清除命令:make mrproper【清除所有由编译所产生的文件+配置文件】;make distclean【make mrporper+删除编辑器留下的备份文件+补丁文件】。
                  除此之外,以下四个命令必须在根目录中执行:make config【文本形式配置】、make menuconfig【字符界面风格的菜单形式】、make oldconfig【字符界面逐项要求用户配置,但是要比make menuconfig少】、make xconfig【以图形化界面形式配置】。
                   最后,成功编译linux后,会在<内核源代码根目录>/arch/arm/boot目录生成一个zImage文件。

本章的内容基本就是如何搭建这两种开发环境,其中linux内核开发环境是重点。

原文地址:https://www.cnblogs.com/wstone/p/5442092.html