cubie A20 android源码编译 小记

cubie 这个开发板已经购买额一年多,一直没有时间玩,最近感觉自己没啥进展,想多学点东西,翻箱倒柜终于找出来。费话不多说

1、源码下载路径方法

两种下载方法,我是直接到cubie百度网盘上下载的,网盘上分享代码和参考资料还是很全的。

1) 在 github 下载git clone https://bitbucket.org/cubietech/a20-android4.2_lichee.gitgit clone https://bitbucket.org/cubietech/a20-android4.2_android.git2 )在百度云下载源码压缩包:

2、搭建编译环境 系统ubuntu14.10

官方推荐的系统是ubuntu 12.04 ,我现在安装的是14.10,,我是按照12.04版本搭建环境

2.1 安装 JDK$wget dl.cubieboard.org/software/tools/android/jdk1.6.0_45.tar.gz解压: &sudo tar -xvf jdk1.6.0_45.tar.gz$ sudo vim ~/.bashrc增加:JAVA_HOME=/jdk-path/jdk1.6.0_45export JRE_HOME=/jdk-path/jdk1.6.0_45/jreexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATHjdk-path 为下载解压后的 jdk 路径保存后使其生效且验证是否成功:$source ~/.bashrc&&java -version

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

编译环境设置

我是自己百度搜索 jdk1.6.0_45 下载并且自己安装的

或者去Oracle官方网站下载老版本 ,具体如何在oracle下载老版本,请百度:oracle官网下载老版本jdk

1.从Oracle上下载jdk-6u45-linux-x64.bin

下载文件:jdk-6u45-linux-x64.bin

2.将jdk-6u45-linux-x64.bin拷贝到/usr/java里面

3进入/usr/java目录,修改jdk-6u45-linux-x64.bin的可执行权限chmod u+x jdk-6u45-linux-x64.bin

4.执行jdk-6u45-linux-x64.bin

./jdk-6u45-linux-x64.bin进行安装

5.进入/etc/profile,进行环境变量配置

6.设置环境变量,在最后添加如下几行

export JAVA_HOME=/usr/java/jdk1.6.0_17

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

(注意,linux中环境变量是以":"分割的,不是";")

7.重启系统reboot

(记得修改后要重启系统)

最后测试 java -version 查看是不是自己安装的版本

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

2.2 安装编译所需包( Ubuntu 12.04 ):

$sudo apt-get update$sudo apt-get upgrade$sudo apt-get install build-essential u-boot-tools uboot-mkimage binutils-arm-linux-gnueabihf$sudo apt-get install gcc g++ gcc-arm-linux-gnueabi gcc-arm-linux-gnueabihf g++-multilib$sudo apt-get install cpp-arm-linux-gnueabihf libusb-1.0-0 libusb-1.0-0-dev wget fakeroot$sudo apt-get install kernel-package zlib1g-dev libncurses5-dev build-essential$sudo apt-get install texinfo texlive ccache zlib1g-dev gawk bison flex gettext uuid-dev$sudo apt-get install ia32-libs git gnupg flex bison gperf build-essential zip$sudo apt-get install curl libc6-dev x11proto-core-dev libx11-dev:i386 lib32ncurses5-dev$sudo apt-get install libreadline6-dev:i386 mingw32 tofrodos python-markdown$sudo apt-get install libxml2-utils xsltproc zlib1g-dev:i386 libgl1-mesa-dev

3、新建文件夹 /work/

把android源码 A20_android.tar.gz 解压到 /work 文件夹下

同理 A20_lichee.tar.gz 也解压到 /work

解压方法

可以使用sudo 或者sudo -i 切换root 账户

tar -zxvf A20_lichee.tar.gz -C /work

tar -zxvfA20_android.tar.gz -C /work

4、内核编译

解压后的源码包分 2 个目录,一个是 android 另一个是 lichee ,内核编译都是在 lichee 下执行的。lichee 主要是编译一些设备需要的模块,驱动,内核等,还有配置文件。编译出来的模块和内核会在整体编译 android 固件时拷贝过去。

编译步骤如下:拷贝内核配置文件

进入lichee/linux-3.4 执行sudo cp arch/arm/configs/cubieboaed2_config .config编译内核

在lichee文件夹下 ./build.sh -p sun7i_android

等待编译完成

最后会出现

INFO : build u-boot ok

build rootfs …

skip make rootfs for android

build rootfs ok

build lichee ok

进入lichee/out 可以看到 zImage

5、整体源码源码编译

内核编译完后,进入 android 目录下。这里执行整个固件的编译,生成 system.img,userdata.img 等镜像,最后将它们打包成我们要的固件。

步骤如下 :le@le:/work/le/a20-android$ cd androidle@le:/work/le/a20-android/android$ source build/envsetup.shle@le:/work/le/a20-android/android$ lunch

输入 16 ( 选择 sugar_cubietruck-eng)

拷贝内核和模块:le@le:/work/le/a20-android/android$ extract-bsp编译:le@le:/work/le/a20-android/android$ make -j8等待 ………..编译完成:

编译完成后打包:le@le:/work/le/a20-android/android$ pack最后就会在 lichee/tools/pack 中生成我们最终的固件。

6 、编译过程中出现的错误

1)Make4.0需要换成3.81或者3.82版本,参考网站

Androidcanonlybebuiltbyversions3.81and3.82

删除高版本的

问题来了 如何 替换低版本make?

先查看

$ make –versionGNU Make 4.0

下载downloaded 3.82 from

下载 make-3.82-154.1.1.x86_64.rpm

然后解压 进入文件夹并且安装

./configuresudo make install

make –versionGNU Make 3.82

这样就得到了 符合需求的make版本

接下来继续编译 源码

(特别注意make版本换了之后需要重新设置编译源码几个步骤,也就是source build/envsetup.sh lunch 。。。 重新操作)

2) calling gperf failed: 32512 at ./makeprop.pl line 140

sh: gperf: not found

太过于近,彼此身上隐性的刺又会深深的伤害对方。

cubie A20 android源码编译 小记

相关文章:

你感兴趣的文章:

标签云: