標籤:
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
應該算是可以編譯出來了,我先去下載韌體。
目前就記得這麼多了,後續再分享。
cubie A20 android源碼編譯 小記