当前位置: 代码迷 >> Android >> cubie A20 android源码编译 初记
  详细解决方案

cubie A20 android源码编译 初记

热度:541   发布时间:2016-04-28 01:10:47.0
cubie A20 android源码编译 小记

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

1、源码下载路径方法

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

1) 在 github 下载
git clone https://bitbucket.org/cubietech/a20-android4.2_lichee.git
git clone https://bitbucket.org/cubietech/a20-android4.2_android.git
2 )在百度云下载源码压缩包:
http://pan.baidu.com/s/1kTFXnPP


2、搭建编译环境 系统ubuntu 14.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_45
export JRE_HOME=/jdk-path/jdk1.6.0_45/jre
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
jdk-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 -zxvf A20_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 等
镜像,最后将它们打包成我们要的固件。

步骤如下 :
[email protected]:/work/le/a20-android$ cd android
[email protected]:/work/le/a20-android/android$ source build/envsetup.sh
[email protected]:/work/le/a20-android/android$ lunch

输入 16 ( 选择 sugar_cubietruck-eng)

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

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


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

 1)Make 4.0 需要换成3.81或者3.82版本,参考网站

Android can only be built by versions 3.81 and 3.82

删除高版本的make 4.0.8,编译安装低版本make 3.82

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

先查看

$ make --version
GNU Make 4.0

下载downloaded 3.82 from http://ftp.gnu.org/gnu/make/

下载 make-3.82-154.1.1.x86_64.rpm

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

./configure
sudo make install

make --version
GNU Make 3.82

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

接下来继续编译 源码

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


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

sh: gperf: not found

target Generated: libwebcore <= external/webkit/Source/JavaScriptCore/create_regex_tables
Generating CSSPropertyNames.h <= CSSPropertyNames.in
sh: gperf: not found
calling gperf failed: 32512 at ./makeprop.pl line 140.
make: *** [out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/CSSPropertyNames.h] Error 25
make: *** Deleting file `out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/CSSPropertyNames.h'

解决方法:sudo apt-get install gperf

{上面错误不是我编译出来的,我是拷贝参考文章,因为当时候编译美柚记录保存,不过解决方法可以,这点重要}

参考 http://www.oschina.net/question/565065_86092


7、解决以上问题之后 make 一路编译

最后出现

RealLen=0x4B0C00
CPlugin Free lib
CPlugin Free lib
normal
dragon image.cfg sys_partition.fex [OK]
----------image is at----------

/work/lichee/tools/pack/sun7i_android_sugar-cubietruck.img

pack finish

应该算是可以编译出来了,我先去下载固件。

目前就记得这么多了,后续再分享。


  相关解决方案