概述
如果我们只对Android内核感兴趣,我们可以选择合适的Android内核来下载编译。
可用的内核源代码有许多版本:
[清楚的]
$gitclone$gitclone$gitclone$gitclone$gitclone$gitclone$gitclone
goldfish项目包含适合模拟器平台的源代码;
msm 项目包含适用于 ADP1、ADP2、Nexus One 和 Nexus 4 的源代码,可用作开发 Snapdragon MSM 芯片组自定义内核的起点;
omap项目包含适用于PandaBoard和Galaxy Nexus的源代码,可作为德州仪器OMAP芯片组内核开发和定制的起点;
三星项目包含适用于Nexus S的源代码,可以作为三星蜂鸟芯片组核心开发和定制工作的起点;
tegra项目包含适用于Xoom和Nexus 7的源代码,可作为NVIDIA Tegra芯片组核心开发和定制工作的起点;
exynos 项目包含适用于 Nexus 10 的源代码andorid 内核源码编译,可用作三星 Orion 芯片组核心定制开发的起点。
编译
1.我选择的是金鱼版本,也就是克隆金鱼而已。
[清楚的]
$mkdirAndroidKernel$gitclone
需要等待一段时间,具体取决于网络速度:
2、然后进入goldfish,发现上面没有文件。 别担心,我们仍然需要选择一个分支并下载真正的源代码:
这可以通过执行以下命令来完成:
[清楚的]
$gitbranch-a
要查看所有分支,然后:
[清楚的]
$ gitcheckout-bandroid-goldfish-2.6.29origin/android-goldfish-2.6.29
下载源码:
3.下载编译所需的预构建工具:
[清楚的]
$gitclone
稍等片刻:
4.将预构建工具添加到环境变量中以供后续使用:
[清楚的]
$exportPATH=$(pwd)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH
5.然后配置其他必要的环境变量:
[清楚的]
$exportARCH=arm $exportSUBARCH=arm$exportCROSS_COMPILE=arm-eabi-
6. 我们执行:
[清楚的]
$makegoldfish_defconfig
要在内核源根目录中生成默认的 .config 文件:
7.最后我们可以编译了:
[清楚的]
$make
编译过程截图:
镜像的输出为:arch/arm/boot/zImage,通过默认配置完成了Android内核的编译。
剪下
裁剪使用一个非常有用的命令:
[清楚的]
$makemenuconfig
上述命令的运行需要以下库,必须提前安装:
[清楚的]
$ sudo apt-get install ncurses-dev
编译Linux内核时会用到make menuconfig命令。 关于它的详细描述,你可以参考以下地方并详细阅读:
简单来说,在编译过程中,编译器通过配置文件学习如何编译,知道应该编译到哪个模块中。这个命令会打开一个红色的命令行菜单,让你在编译时修改配置。 切割时也会通过该命令打开一个菜单来修改编译配置。 如果退出时有变化,会手动提示保存。
我们将make menuconfig打开的菜单中的菜单项更改为剪切。 这个菜单还是很友好的。 您可以根据自己的需要知道如何切割。 切割完成后,退出时询问是否保存andorid 内核源码编译,当然必须保存(实际上就是更新上面提到的默认源码根目录下的config文件)。
然后我们就可以编译修剪后的内核了(当然,编译过程中也会读取更新后的配置文件):
[清楚的]
$ 制作
编译完成后,看一下编译后的镜像。 如果没有问题,你会发现新的镜像比未裁剪的编译镜像要小。
----------------------------------
1、环保设备
首先准备好所需的Linux操作系统和C盘空间。 磁盘空间必须足够大。 内存>1G,硬盘>40G
1.1. 安装JDK1.6: sudo apt-get install sun-java6-jdk
1.2. 安装开发过程中需要的一些开发包
sudo apt-get install git-core gnupg valgrind flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip libncurses5-dev zlib1g-dev
如果在提供的源中找不到所需的安装包,可以添加软件源:
添加源的过程:
① 备份当前源列表 sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
② 修改 sudo gedit /etc/apt/sources.list
③ 修改后保存并更新 sudo apt-get update
准备好获取android源码所需的环境之后,我们就开始获取android源码了。
2.获取android源码
2.1. 在用户目录下新建一个文件夹,用来存放我们的android目录
①mkdir android
②cd安卓
③ mkdir bin
④ 光盘仓
⑤安装repo,通过curl下载repo:curl > repo(如果没有安装curl,sudo apt-get install curl)
sudo chmod a+x 仓库
⑥ 然后将bin路径添加到PATH中:exportPATH=$PATH:~/bin
2.2. 创建一个目录,存放android源码源码
① mkdir 源
②光盘源
③在git上获取android源码版本:../bin/repo init -u -b android-4.0.3_r1
④出现提示时,请配置您用于回购的真实姓名和电子邮件地址。 要使用 Gerrit 代码审查工具,需要注册 Google 帐户才能连接到电子邮件地址。 确保这是一个有效的实时地址,您可以通过该地址接收短信。 您在此处提供的名称将显示在您提交的代码的属性中。 完成后会出现“repoinitialized in /home/***(您的用户名)/android”,说明初步试用完成,可以开始下载了。 Repo初始化后,会形成一个隐藏目录“.repo”,通过查看该目录下的manifest文件可以看到对应的Project。
⑤ 在终端执行命令开始下载:../bin/reposync
3.下载安卓内核
新建一个目录存放android内核
① mkdir内核
②cd内核
③Android内核有多个部分,您可以根据需要运行以下命令下载所需内容。 克隆
下载android内核的时间会比下载源码的时间短。 需要注意的是,android内核的下载不能中断,并且android源码支持断点下载。下载的内容是隐藏的,使用du -sk命令测量文件夹大小
4.编译android源码
编译。 在Android/source目录下执行以下命令:make
第一次编译时间比较长,编译成功
编译通常不会比下载时间长。 默认情况下,编译完成后,会在/root/android目录下生成一个out文件夹,所有生成的文件都会放在这个文件夹中。编译生成后,out中会生成一些.img图片文件/目标/产品/通用/目录
5.编译android内核
5.1. 确定内核版本
进入android内核源码存放的kernel目录。 我下载了goldfish.git,进入goldfish目录,在命令行输入以下命令,显示所有分支和当前分支:
$ git 分支 -a
输入以下命令选择当前版本(goldfish是android模拟器描述的CPU):
$ git checkout -b android-goldfish-2.6.29 origin/android-goldfish-2.6.29
再次输入命令 gitbranch -a ,会显示刚刚选择的最新分支,说明当前正在处理选择的分支
5.2. 设置环境变量
导出 PATH=$PATH:~/android/source/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/:$PATH
导出 ARCH=arm
导出 CROSS_COMPILE=arm-eabi-
5.3. 编译内核源代码
设置完毕后,就该编译android内核源代码了。 进入内核目录,输入以下命令
$make ARCH=arm goldfish_armv7_defconfig
$ 制作
第一条命令是编译时的默认配置文件。 如果不执行该命令,编译时可能会提示“配置文件未找到”。 第一条命令执行后,会在goldfish目录下生成.config文件。 然后就是一段等待的时间。 。 。 花费的时间并不长,一会儿就可以编译完成,比编译android源代码花费的时间要少得多。 编译完成后,会在“kernel/arch/arm/boot/”目录下生成一个名为zImage的文件。
6.运行Android系统
设置路径
导出 PATH=$PATH:~/android/source/out/host/linux-x86/bin/
导出 ANDROID_PRODUCT_OUT=~/android/source/out/target/product/generic/
加载:模拟器–内核./kernel/goldfish/arch/arm/boot/zImage