1. 基礎環境說明
- 開發板型號:
FriendlyARM Tiny4412SDK-1312-S702 - 編譯機linux環境:
Ubuntu 14.04.5下載地址 - Android源碼版本:
android-5.0.2-fs-20170116.tar.gz下載地址 - kernel源碼版本:
linux-3.0.86-20170221.tgz下載地址 - uboot源碼版本:
uboot_tiny4412_0929.tar.gz下載地址
2. 配置步驟
以下配置步驟假設你對linux系統的基本知識已經有所了解,並已經擁有了ubuntu系統的root權限。不要盲目復制命令執行,你需要知道每條命令做了什么,根據自己的實際情況來操作。
2.1 安裝交叉編譯環境
-
用到的文件:附贈的光盤中的
arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz壓縮包 -
配置方法:
-
首先在命令行進入壓縮包所在目錄並使用
tar命令解壓,假設壓縮包所在目錄為/mnt/Disk-A/,則執行cd /mnt/Disk-A tar xvzf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz –C / -
配置系統環境變量。如果正常解壓,此時交叉編譯器已經被解壓到了
/opt/FriendlyARM/toolschain/4.5.1這個目錄,需要設置環境變量以方便使用。假設你使用的shell是bash,使用你常用的編輯器(如vim,gedit)打開
~/.bashrc,如果沒有這個文件,則新建。例如:vim ~/.bashrc然后將以下語句加入該文件的最后一行。
export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin之后保存退出。
- 注銷用戶並重新登錄,此時在命令行執行
arm-linux-gcc –v,如果能正常輸出版本信息,則說明交叉編譯器已經安裝成功,否則檢查前兩步是否出現了問題。
-
2.2 配置Android編譯環境
-
安裝
java環境- 根據你要編譯的android版本選擇適合的JDK版本
The master branch of Android in AOSP: Ubuntu - OpenJDK 8, Mac OS - jdk 8u45 or newer
Android 5.x (Lollipop) - Android 6.0 (Marshmallow): Ubuntu - OpenJDK 7, Mac OS - jdk-7u71-macosx-x64.dmg
Android 2.3.x (Gingerbread) - Android 4.4.x (KitKat): Ubuntu - Java JDK 6, Mac OS - Java JDK 6
Android 1.5 (Cupcake) - Android 2.2.x (Froyo): Ubuntu - Java JDK 5
-
以我們本次用到的Android 5.0.2 和 Ubuntu14.04為例,我們需要安裝
OpenJDK 7,這個包在ubuntu的軟件源里有了,所以我們只需要執行sudo apt-get install openjdk-7-jdk -
在命令行執行
java和javac來檢查是否已經成功安裝了java環境。
-
安裝編譯必須的軟件包
-
接下來需要在ubuntu上安裝編譯Android所需要的軟件包。
-
如果你是
ubuntu14.04的版本,在命令行執行以下命令安裝:sudo apt-get install git-core gnupg flex bison gperf build-essential \ zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \ lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \ libgl1-mesa-dev libxml2-utils xsltproc unzip -
如果你是
ubuntu12.04的版本,則執行以下命令:sudo apt-get install git gnupg flex bison gperf build-essential \ zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \ libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \ libgl1-mesa-dev g++-multilib mingw32 tofrodos \ python-markdown libxml2-utils xsltproc zlib1g-dev:i386 sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so -
推薦使用
ubuntu14.04版本進行編譯工作,避免因為版本不同出現問題。
2.3 解壓源碼
2.3.1 解壓kernel源碼
將kernel源碼壓縮包解壓到一個用於編譯的文件夾中,假設我們的壓縮包放在/tmp/compile/kernel中,將其解壓到當前目錄只需要執行以下命令:
cd /tmp/compile/kernel
tar xvzf linux-3.0.86-20170221.tgz
之后就能在當前目錄下看到解壓好的linux-3.0.86文件夾。
2.3.2 解壓Android源碼
與解壓kernel類似,同樣進入壓縮包所在目錄將源碼包解壓。(解壓后大概14GB,要保證磁盤空間足夠)
例如:
cd /tmp/compile/android
tar xvzf android-5.0.2-fs-20170116.tar.gz
執行后就能得到解壓后的android源碼文件夾。
2.3.2 解壓uboot源碼
與前二者類似,都是使用tar命令解壓.tar.gz壓縮包。
例如:
cd /tmp/compile/uboot
tar xvzf uboot_tiny4412_0929.tar.gz
以上的三組命令並非必需,在圖形界面里解壓也並沒有什么影響。
2.4 編譯源碼
2.4.1 編譯kernel
-
首先進入源碼所在的目錄,例如:
cd /tmp/compile/kernel/linux-3.0.86 -
接下來將源碼中tiny4412的內核配置設為默認配置
cp tiny4412_android_defconfig .config -
然后可以對內核的編譯選項進行自己的調整,執行
make menuconfig會進入一個終端里的簡單界面,用於調整kernel的一些編譯選項
-
接下來就可以使用make命令進行編譯工作了。
make -jN # N代表編譯時的線程數,根據實際情況修改,可以加速編譯(如 make -j8) -
編譯好后就可以在
arch/arm/boot路徑下得到一個zImage文件,這就是編譯好的內核。下圖為編譯好內核時的輸出

2.4.2 編譯Android源碼
-
與編譯kernel類似,首先cd進入源碼所在目錄,並載入setenv腳本設置編譯時的環境:
cd /tmp/compile/android/android-5.0.2 # 進入目錄 . setenv #這個點其實是個source命令,中間要有空格 -
執行make命令開始編譯。(需要很長時間)
make -jN # N代表編譯時的線程數,根據實際情況修改,可以加速編譯(如 make -j8)我們的8線程筆記本在編譯時的情況,CPU全部占用:

編譯結束后的輸出:用時 1小時18分鍾56秒

-
這時還沒有結束,還需要執行一個腳本生成一些img文件
./gen-img.sh然后當前目錄就生成了
system.img,ramdisk-u.img,這兩個就是我們接下來要用到的。
2.4.3 編譯uboot
uboot這里被坑了,啟動andoird后一段時間lcd滅,無反應,弄好了來填坑
2.5 燒錄系統
uboot這里被坑了,啟動andoird后一段時間lcd滅,無反應,弄好了來填坑
3. 參考資料
該配置指導所參考的資源、網站、個人博客有:
