文章目录

  • 编译流程
  • 一、uboot编译
  • 1.编译须知
  • 2.编译步骤
  • 二、编译linux内核
  • 1.编译须知
  • 2.编译步骤


编译流程

Uboot、Kernel(即 Linux 内核,下面等同)以及 Android 的编译环境看似复杂,用户只要抓住以下几个要点就可以了

第一、Uboot、Kernel编译器。
第二、设置环境变量。Uboot、Kernel编译器的环境变量设置后,编译的 时候,系统才能找到编译器。
第三、Android 文件系统的编译器。编译器需要使用 Ubuntu 系统自带的 gcc 编译器,但是版本不对,所以需要降低版本。迅为将这个过程编写了成几个简单的命令,用户只需要挨个执行命令就可以了。
第四:库文件。搭建过程中会给通过执行简单的脚本命令来安装库文件,复杂的步骤变的简单有效。

一、uboot编译

1.编译须知

编译器使用arm-2009q3.tar.bz2

编译源码在06_源码_uboot 和 kernel目录下

编译uboot的脚本是源码文件夹中的“build_uboot.sh”

在编译的时候需要向脚本传参数,根据核心板的不同,脚本执行参数如下表所示。

android 编译硬盘 编译安卓内核教程_ubuntu

2.编译步骤

将光盘“06_源码_uboot 和 kernel”目录下“CodeSign4SecureBoot_SCP”以及“iTop4412_uboot_xxx.tar.gz”拷贝到 Ubuntu 系统下,然后将“iTop4412_uboot_xxx.tar.gz”解压,得到“iTop4412_uboot”文件夹,如下

图所示。

android 编译硬盘 编译安卓内核教程_linux_02


进入“iTop4412_uboot”文件夹,使用编译脚本“build_uboot.sh”编译 uboot,这里需要编译的是“SCP 1G 核心板”的 uboot 镜像,那么编译命令是

./build_uboot.sh SCP_1GDDR

android 编译硬盘 编译安卓内核教程_linux_03


编译完成。

在此目录下生成了

android 编译硬盘 编译安卓内核教程_linux_04


这个文件就是对应的uboot镜像文件。

二、编译linux内核

1.编译须知

Linux 内核源码在光盘“06_源码_uboot 和 kernel”目录下

如果编译的是android的

内核的编译是组合式配置文件,基本的配置文件名是“config_for_android_YY_elite”,

YY 表示用下表所示的参数替代。

android 编译硬盘 编译安卓内核教程_内核_05

如果编译时QT的

内核的编译是组合式配置文件,基本的配置文件名是“config_for_linux_YY_elite”,

YY表示用下表所示的参数替代。

android 编译硬盘 编译安卓内核教程_android 编译硬盘_06

2.编译步骤

将光盘“06_源码_uboot 和 kernel”目录下的压缩包
“iTop4412_Kernel_3.0_xxx.tar.gz”拷贝到 Ubuntu,然后解压,得到文件夹“iTop4412_Kernel_3.0 ”,如下图所示。

android 编译硬盘 编译安卓内核教程_内核_07


进入文件夹“iTop4412_Kernel_3.0 ”,使用命令

android

cp config_for_android_scp_elite .config

QT

cp config_for_linux_scp_elite .config

覆盖自带的配置文件

android 编译硬盘 编译安卓内核教程_内核_08


然后使用编译命令“make zImage”

make zImage

编译可能报错

android 编译硬盘 编译安卓内核教程_android 编译硬盘_09


解决方法是修改下面的文件

vim ./kernel/timeconst.pl

android 编译硬盘 编译安卓内核教程_linux_10

if (!defined(@val)) {
改为if (!@val) {

android 编译硬盘 编译安卓内核教程_ubuntu_11


再执行

make zImage

温馨提示:需要等待一段时间

android 编译硬盘 编译安卓内核教程_android 编译硬盘_12


编译完成。

文件夹“iTop4412_Kernel_3.0 ”下的“arch”–>“arm”–>“boot”会生成镜像文
件“zImage”,这个 zImage 镜像可以给 SCP 1G 和 SCP 2G 的核心板使用。

查看生成的镜像文件

ls arch/arm/boot/

android 编译硬盘 编译安卓内核教程_ubuntu_13