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 等
映象,最後將它們打包成我們要的韌體。
步驟如下 :
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版本
接下來繼續編譯 原始碼
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'
{上面錯誤不是我編譯出來的,我是拷貝參考文章,因為當時候編譯美柚記錄儲存,不過解決方法可以,這點重要}
參考 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
應該算是可以編譯出來了,我先去下載韌體。
目前就記得這麼多了,後續再分享。
相關文章
- 記一次編譯Android原始碼編譯Android原始碼
- 編譯Android原始碼編譯Android原始碼
- Mac Android8.0原始碼編譯筆記MacAndroid原始碼編譯筆記
- Android原始碼編譯--整理Android原始碼編譯
- Android原始碼閱讀-編譯8.0原始碼Android原始碼編譯
- MacOS X 編譯Android原始碼Mac編譯Android原始碼
- Android FrameWork 之原始碼編譯AndroidFramework原始碼編譯
- 【閱讀筆記】Taro轉小程式編譯原始碼解析筆記編譯原始碼
- Android 原始碼中的編譯命令Android原始碼編譯
- Android原始碼編譯整理總結Android原始碼編譯
- android 反編譯APK取原始碼。Android編譯APK原始碼
- 【轉】編譯Android系統原始碼和核心原始碼編譯Android原始碼
- Android 11 原始碼下載+編譯教程Android原始碼編譯
- Android Apk反編譯得到Java原始碼AndroidAPK編譯Java原始碼
- hive原始碼編譯(失敗記錄)Hive原始碼編譯
- 反編譯獲取任何微信小程式原始碼編譯微信小程式原始碼
- Android高版本P/Q/R原始碼編譯指南Android原始碼編譯
- Ubuntu 15.04編譯Android 6.0.1原始碼-Nexus5真機編譯Ubuntu編譯Android原始碼
- Android 原始碼的下載和編譯環境的安裝及編譯Android原始碼編譯
- A20核心編譯錯誤undefined reference to `hwmon_device_register編譯Undefineddev
- MySQL-5.6.29原始碼編譯安裝記錄MySql原始碼編譯
- 原始碼編譯Vim 8原始碼編譯
- MongoDB(0)- 原始碼編譯MongoDB原始碼編譯
- 編譯hibernate原始碼編譯原始碼
- Docker編譯Azerothcore原始碼Docker編譯原始碼
- Spring原始碼編譯Spring原始碼編譯
- Android學習系列(38)--Android原始碼下載和編譯Android原始碼編譯
- 微信小程式“反編譯”實戰(二):原始碼還原微信小程式編譯原始碼
- Ubuntu下Android原始碼以及核心下載與編譯UbuntuAndroid原始碼編譯
- 在Ubuntu9.10下編譯Android原始碼薦Ubuntu編譯Android原始碼
- 編譯FFMPEG原始碼的指令碼編寫案例編譯原始碼指令碼
- WebRTC研究 (一) 編譯原始碼Web編譯原始碼
- 原始碼編譯 apache2.4原始碼編譯Apache
- Kubernetes原始碼編譯原始碼編譯
- Swift原始碼專案編譯Swift原始碼編譯
- 龍芯原始碼編譯MySQL原始碼編譯MySql
- Ceph原始碼編譯與打包原始碼編譯
- nvme driver 原始碼修改、編譯原始碼編譯