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

Android移植主要就是Linux内核的移植,而Linux内核的移植主要是Linux驱动的移植。为了开发和测试Linux驱动,需在Ubuntu Linux下搭建两套开发环境:Android应用程序开发环境和Linux内核开发环境。需要对源代码进行下载和编译,由于Android源代码包含了很多东西,如内嵌在Android系统中的应用程序的源代码,Android SDK带的各种工具的源代码,Android NDK的源代码,以及HAL源代码,所以对Android源代码的下载、编译和测试过程比较复杂、繁琐,在这里就先介绍相对比较简单的下载和编译Linux内核源代码的方法和步骤。

下载的Android源代码并没有包含Linux内核源代码,要想使用Linux内核,必须要单独下载Linux内核源代码,必须从Google提供的网址下载Android中使用的Linux内核源代码。

1.下载Linux内核源代码:执行命令“# git clone https://android.googlesource.com/kernel/common,git”可以下载最新的Linux内核源代码,下载会花费较长的时间。下载完成后,在当前目录下会有一个common目录,进入该目录,执行命令“# git branch -a”查看当前有哪些远程版本库。根据版本情况从版本库导出最新的Linux内核,可以使用命令“# git checkout -b android-3.0 remotes/origin/android-3.0”导出Linux 3.0的内核。Google专门为Android模拟器提供了一个Linux内核goldfish,可以使用命令“# git clone http://android.googlesource.com/kernel/goldfish.git”下载该内核。下载完成后,进入goldfish目录,执行命令“# git checkout -b android-goldfish-2.6.29 remotes/origin/android-goldfish-2.6.29”导出goldfish。

2.Linux内核源代码的目录结构,有arch,block,Documentation,drivers,firmware,fs,include等多个目录。

3.安装Android内核的编译环境:在Ubuntu Linux下编译Linux内核需要安装交叉编译器。交叉编译器就是指在A架构的CPU上编译可在B架构CPU上运行的程序。主要是因为编译器无法在目标平台上安装或目标平台性能较低,不得已才在性能较高限制较少的平台上进行编译。在编译Linux内核之前,需配置Linux内核源代码根目录下的Makefile文件。打开Makefile,找到ARCH和CROSS_COMPILE,并将这两个变量设置成如下值“ARCH ?= arm

CROSS_COMPILE?= arm-none-linux-gnueabi-”,其中ARCH变量表示将Linux源代码编译成可在ARM架构上运行的Linux内核。CROSS_COMPILE变量表示交叉编译器的前缀。打开交叉编译者的bin目录,可以看到很多以arm-none-linux-gnueabi-开头的命令,如arm-none-linux-gnueabi-gcc、arm-none-linux-gnueabi-gdb等。由于编译Linux内核可能会使用很多这样的命令,为了方便,Linux内核允许值只设置这些命令的前缀,就可找到相应的编译命令。安装交叉编译器步骤如下:

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

②解压编译器:使用命令

“# tar zxvf arm-linux-gcc-4.3.2.tgz -C /

# tar jxvf arm-none-linux-gnueabi-arm-2008q3-72-for-linux.tar.bz2 -C /”

解压两个压缩文件

③验证交叉编译器是否安装成功,使用命令“# ls /usr/local/arm -l”④安装libncurses5,为了配置内核make menuconfig,libncurses5可以为字符界面的Linux终端提供一个美观的界面,使用命令“# apt-get install libncurses5-dev”

4.配置和编译Linux内核:如果内核源代码目录是“/root/linux_kernel”,使用命令

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

# cd ~/linux_kernel

# make clean

# make”

编译Linux内核,make clean命令用于清除大多读由编译生成的.o、.ko等文件,但保留配置文件。一般新下载的Linux源代码根目录都没有.config文件,而这个文件决定了编译生成的Linux内核由哪些功能和模块组成。第一次拿到Linux内核时应先使用4个命令中的一个配置Linux内核,在Linux内核源代码根目录产生一个.config文件。在配置Linux内核前一般需确定自己的需求,需要什么样的驱动模块、是否支持调试、支持的CPU类型等。4个配置命令必须在Linux源代码根目录执行。

①make config:该命令以文本形式配置Linux内核。配置项后面中括号中的值是该配置项当前的值,如果中括号中有多个值,第一个是默认值,如果不设置,直接按回车就会保留默认值。

②make menuconfig:以字符界面风格的菜单形式配置Linux内核。配置界面后面带“-->”的菜单项说明还有子菜单。按回车键就可进入子菜单。很多菜单项前面有中括号,里面可以是“M”或“*”,也可以为空。有的菜单项前的中括号里只能设置“*”或空。中括号里的值表明当前菜单项对应的Linux内核组件嵌入Linux内核的方式。[M]表示以模块形式.ko文件动态安装在Linux内核中。[Y]表示Linux内核组件会嵌入Linux内核。当Linux内核成功启动后,这些组件会自动装载。如果为空表明该Linux内核组件不会包含到当前的Linux内核中。通过按“M”键可以将中括号中的值设置成“M”,按“Y”可将中括号中的值设为“Y”。按空格键可以在[M]、[Y]和空格之间进行切换。最后通过Exit退出设置界面后,如果修改了设置项,会询问是否保持刚才的设置。如果选Yes,则会根据刚才的设置重新生成.config文件。

③make oldconfig:与make config类似,也是以字符界面逐项要求用户配置。但它显示的要求用户参与的配置项要比make config少。大多数配置项都会给出默认值,并不需要用户进行配置。只有后面带NEW的配置项才需要用户配置,这些配置项都是当前Linux内核版本新加入的功能。

④make xconfig:以图形界面形式配置Linux内核,使用了QT的共享库,要执行此命令,必须安装QT,可使用命令“# apt-get install libqt4-dev”。安装完QT后,执行make xconfig。在界面中可以通过上面的保存安装保存设置,也可以使用打开按钮打开其它配置文件。在配置中有一项很重要,就是交叉编译器的签名。使用make menuconfig命令。成功编译Linux内核后,会在<Linux内核源代码根目录>/arch/arm/boot目录生成一个zImage文件。该文件就是Linux内核的二进制版本。可以直接使用zImage安装到开发板上,也可以使用命令“# emulator -avd myavd -kernel /root/kernel/goldfish/arch/arm/boot/zImage”在Android模拟器中测试Linux内核,需要使用由goldfish编译而成的zImage文件,myavd是一个AVD名称。

时间: 2024-12-22 22:39:33

第四章 源代码的下载和编译的相关文章

Android深度探索(卷1)HAL与驱动开发 第四章 源代码的下载和编译 读书笔记

Android深度探索(卷1)HAL与驱动开发 第四章 源代码的下载和编译 读书笔记     本章学习了使用git下载两套源代码并搭建两个开发环境.分别为Android源代码和Linux内核源代码.Android源代码中包含了HAL(即硬件抽象层) 的代码,并学习了如何搭建这两种开发环境. Android 的移植的本质就是Linux内核的移植,Linux内核的移植主要是Linux驱动的移植.而开发和测试Linux驱动就需要安装以上两个开发环境. 搭建两套环境的具体步骤如下: 一.下载编译和测试A

第四章源代码的下载和编译 心得体会

第四章源代码的下载和编译 心得体会 通过学习Android深度探索(卷1)HAL与驱动开发的第四章源代码的下载和编译,我知道了该操作的基本流程,也学习到了一些基本的操作命令. 一.初始环境搭建 1.安装JDK 2.安装编译工具 二.下载Android源码 3.创建工作目录 进入工作目录(比如works),创建bin目录: mkdir ~/works mkdir ~/works/android_dev cd ~/works/android_dev mkdir bin 4.安装repo版本管理工具(

第四章源代码的下载和编译读后感

这章先讲了下载编译和测试安卓源代码:1.配置安卓源代码下载环境:第一步:创建一个用于存放下载脚本文件的目录:第二步:下载repo脚本文件.第三步:创建用于存放安卓源代码的目录:第四步:初始化:第五步:开始下载安卓源代码:2.安卓源代码目录结构解析:3.下载安卓源代码中的一部分:方法一:使用repo sync 命令.方法二:使用git clone命令:4.编译安卓源代码:第一步:初始化编译环境:第二步:选择目标:第三步:编译安卓源代码:5.out目录结构分析:6.将自己的APK作为安卓内置程序发布

第四章 源代码的下载与编译 - 读书笔记

Android驱动月考4 1.配置Android源代码下载环境 创建文件以及配置路径 PATH 使用curl或者wget方式下载脚本 并且赋予权限于~/bin/repo 创建Android源代码的目录以及初始化init,并且开始下载源代码,也可以下载源代码的一部分. 2.使用git clone从Googlesource把Android源代码项目克隆到本地. 3.编译,这里比较重要,运行envsetup.sh安装的shell脚本,之后进行之后的安装步骤接模拟器. 4.下载和编译linux内核的源代

第四章 源代码的下载和编译--读书笔记

之前,学习了如何使用Git,现在我们终于可以使用Git来下载自己所需的源代码了.首先我们要做的工作是配置Android源代码下载环境: 第1步:创建一个用于存放下载脚本文件(repo)的目录(可将该脚本文件一放在任何目录下,在这里使用~/bin): 第2步:下载repo脚本文件(用于下载Android源代码): 第3步:创建用于存放Android源代码的目录(可放在其他目录中): 第4步:初始化: 第5步:下载Android源代码 下载Android源代码中的某个子项目有两种方法:1,使用rep

第四章 源代码的下载和编译 心得笔记

1.要用适应于Android的Linux内核. 2.配置Android源代码下载环境 1>创建一个用于存放下载脚本文件(repo)的目录 #mkdir ~/bin #PATH=~/bin:$PATH 2>下载repo脚本文件 #curl https://dl-ssl.google.com/dl/googlesourse/git-repo/repo > ~/bin/repo #chmod a+x ~/bin/repo 3>创建用于存放Android源代码的目录 #mkdir andr

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

1.安装openjdk-7-jdkAndroid 5.1 用到的jdk不再是Oracle 的 jdk ,而是开源的 openjdk,在ubuntu安装好后,使用如下命令安装jdk:$sudo apt-get install openjdk-7-jdk   安装好后,设置环境变量:在/etc/profile 文件末尾加上:JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/  PATH=$PATH:$HOME/bin:$JAVA_HOME/bin  export

第4章 源代码的下载和编译

安卓源代码包含了很多东西,内嵌在其中的应用程序的源代码及各种工具.所以我们要想使用他人的Linux软件要下载他的源代码.想要下载源代码需要配置Android源代码下载环境,首先创建一个用于存放下载脚本文件的(repo)的目录 接着下载repo脚本文件(用于下载Android源代码) 并创建用于存放Android源代码的目录 最后初始化.就可以开始下载Android源代码.想要使用下载下来的代码就必须了解代码的目录结构,在这些文件中除了Makefile文件外其全是目录这些目录保存了Android源

第四章:源代码的下载和编译的学习笔记

第四章:源代码的下载和编译 本章主要是学习使用GIT下载两套源代码,学习如何下载和编译Android源代码和Linux 内核源代码. 一.下载.编译和测试Android源代码 (1)配置Android源代码下载环境: 1.创建一个用于存放下载脚本文件(repo)的目录(可将该脚本文件一放在任何目录下,在这里使用~/bin). 2.下载repo脚本文件(用于下载Android源代码) 3.创建用于存放Android源代码的目录(可放在其他目录中) # mkdir android-source #