cubie A20 android原始碼編譯 小記

penglijiang發表於2015-05-03

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 等
映象,最後將它們打包成我們要的韌體。

步驟如下 :
le@le:/work/le/a20-android$ cd android
le@le:/work/le/a20-android/android$ source build/envsetup.sh
le@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)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

應該算是可以編譯出來了,我先去下載韌體。

目前就記得這麼多了,後續再分享。


相關文章