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

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

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

时间: 2024-08-06 20:05:50

cubie A20 android源码编译 小记的相关文章

android 源码编译及其运行模拟器相关问题记录

最近一直在看android源码相关的文档,包括编译源码,还有framework层的代码,本人很懒,一直没有写博客,今天想自己在编译一下源码,并且运行在模拟器中. 源码的版本不同,需要的jdk可能也有所不同,一切都参照官方给与的文档,下载源码的方法也参考官方文档. 注意点:1.环境变量要设置正确,不要出现错误 2.基本没有一次就能顺利编译源码的,多少都会出错,根据提示修改错误,安装一些包和库就可以搞定,具体问题具体查找,我遇到的问题也可多了,都是按官方文档解决的.有些问题可能和你的编译环境相关,这

基于Hi3716cV200的Android源码编译问题---fastboot-burn.bin

在编译源码时有时会报与"fastboot-burn.bin"有关的错误. 解决办法如下: 进入device/hisilicon/bigfish/sdk目录,一次执行 make hiboot_clean; make hiboot_install. 如果在这个过程中报弄cfg.mak文件的错误,解决办法之一是在Android源码根目录进行一次完整编译,直到出错停止,此时会生成cfg.mak文件:解决方法之二是从sdk/configs拷贝单板配置文件到sdk目录并改名为cfg.mak. ==

有关android源码编译的几个问题

项目用到编译环境,与源码有些差异不能照搬,关键是连源码都没编译过,下面基本上是行网上照的各种自学成才的分享,病急乱投医了,都记在下面作为参照吧. 1.验证是否编译正确,在终端执行 emulator & (注:可进入${ANDROID_PRODUCT_OUT}目录,后执行 emulator -image system.img -data userdata.img -ramdisk ramdisk.img) 模拟器能正常启动则表明编译成功 Android源码编译调试详解  Android2.2的,有

基于海思Hi3716cv200的Android源码编译及烧写

1.先说说硬件配置,我最开始是在Win7(I7 4770,8G RAM,2T硬盘)里装ubuntu10.10 64位系统(4G RAM,200G 硬盘)进行源码编译,大概花了3个多小时.而且还多次出现outofmemoryerror 错误.最后将硬件升级为I7 4770.16G内存.2T硬盘,不装虚拟机,直接跑Ubuntu 10.10系统,Swap分区为16G,编译一次大概花了40分钟,没有报任何错误. 所以不推荐在虚拟机里面跑. 2.根据官方文档配置编译环境: 官方文档说的是在"发布包/Sof

Android源码编译jar包BUILD_JAVA_LIBRARY 与BUILD_STATIC_JAVA_LIBRARY的区别(二)

上文简单介绍了BUILD_JAVA_LIBRARY 与BUILD_STATIC_JAVA_LIBRARY编译出来jar包的区别, 那么你如果拿到了一个内容是dex格式的jar包,而你又偏偏需要这个jar包导入Eclipse来做开发, 手头偏偏又没有这个jar包的源码,或者有源码,但是没有Android源码编译(mm)的环境,怎么办? 这个时候谷歌安卓反编译工具(dex2jar, 本人实在太懒,就不提供下载链接了)就有用处了, 将jar包里面的dex文件(classes.dex)用此神器转换成一个

Android源码编译

Android源码编译学习小结 内容 系统源码编译 笔者之前在学习安卓系统源码的编译,为了能够印象深刻,粗略的总结了以下内容,希望对我一样的初学者有一些帮助. 系统编译的初始化指令 对android编译环境进行初始化很简单,分为两步.第一步打开终端输入source build/envseup.sh加载所需的文件. $ source build/envseup.sh including device/asusource build/envseup.shs/grouper/vendorsetup.s

Android源码编译make的错误处理

android源码下载:官方下载 或参考android源码下载方式 Android编译版本: PLATFORM_VERSION=4.0.1(最新Android 4.0.1) OS 操作系统平台: Linux yanggang 2.6.35-30-generic #61-Ubuntu SMP Tue Oct 11 15:29:15 UTC 2011 i686 GNU/Linux(Ubuntu10.10  32bit) 首先,我们先安装一些常用的工具curl: sudo  apt-get  inst

Android源码编译之Nexus5真机编译

1.   前言 在Android安全的研究工作中,我们时常要对Android进行改进并对其进行源码编译,由于目前几乎所有的手机厂商均对其底层驱动实行封闭政策,导致我们在完成Android编译后无法将我们编译好的系统刷到普通的Android手机上,因此在一般的科学实验中我们更多的是将修改好的android源码编译成模拟器,以模拟器的形式证明实验的成功与否. 事实上,Android作为一款开放源代码的移动设备操作系统,Google最初就考虑到了真机编译的问题,而关于这个问题的解决方案体现在每次Goo

android源码编译完成之后

android源码编译完成之后,在根目录下会有一个out目录生成,如果我们想要运行虚拟机的话,需要配置一下环境变量. 首先我们使用下面的命令打开配置环境变量的文件: gedit ~./bashrc 在这个文件的最后,添加如下代码: export ANDROID_PRODUCT_OUT=~/android/out/target/product/generic ANDROID_PRODUCT_OUT_BIN=~/android/out/host/linux-x86/bin export PATH=$