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
应该算是可以编译出来了,我先去下载固件。
目前就记得这么多了,后续再分享。