潛水多年,一直在從別人那裏獲取經驗,如今以爲也應當分享分享了;android
今天終於本身親手編譯了一把(在公司,環境都已經配好了);git
-------------------------正文--------------------------------markdown
pre:oracle
系統:UBUNTU 14.0.4curl
64 位flex
Android 4.4.2ui
----url
1,源碼資源被牆了。(抗X議), 建議不要去瞎折騰了,搜索一下,國內資源;我是從 百度網盤 上下載的。(抱歉地址未保存)es5
2,JDK 須要1.6 (oracle); 也是百度資源xml
3, 解壓源碼後:
1) cd 源碼目錄
1) . build/envXXX.sh (按tab 鍵吧, 注意 點 後的 空格)
2) make :
4,此時通常都會報錯; 根據錯誤提示處理錯誤吧;
1) 無寫權限問題:直接給 源碼目錄 遞歸 增長權限吧;
2) 而後遇到一個 aidl_langugeXXX 問題:是一個 依賴程序沒有安裝;
sudo apt-get install flex
一些聽說須要安裝的包:
Gnupg
build-essentail
git [預安裝,不知是否必須]
flex //[報錯.並安裝]
bison [預安裝,不知是否必須]
gperf
zip[預安裝,不知是否必須]
curl[預安裝,不知是否必須]
sudo apt-get install libc6-dev-i386
sudo apt-get install g++-multilib
sudo apt-get install lib32z1-dev
xmllint //[報錯,並安裝]
pip install markdown;//[報錯,並安裝]
sudo apt-get install lib32ncurses5-dev
sudo apt-get install xsltproc //[報錯,並安裝]
sudo apt-get install libxml2-utils //[報錯,並安裝]
5, 而後就順暢的跑完了。
---------------END-----------------
沒什麼技術含量。不過對於android 開發來講 , 意義仍是比較重大的。
-------------------------STEP 2--------------------------
近期準備用本身編譯的源碼 來刷機。
發現編譯後的代碼中 缺乏:mkbootimg
1)直接嘗試經過 mmm命令單獨編譯 android_source\system\core\mkbootimg\ 失敗。
提示 no rule found : for : libmincrpt 相關;
2,嘗試直接經過gcc 編譯。
嘗試將依賴文件,和 拷貝到編譯文件地址, 並修改include 位置。【失敗。 緣由: 編譯這塊比較菜】
搜索發現:
$ cd /path/to/android-src
$ cd system/core/libmincrypt/
$ gcc -c *.c -I../include
$ ar rcs libmincrypt.a *.o
$ cd ../mkbootimg
$ gcc mkbootimg.c -o mkbootimg -I../include ../libmincrypt/libmincrypt.a
$ gcc unpackbootimg.c -o unpackbootimg -I../include ../libmincrypt/libmincrypt.a
$ cd ../cpio
$ gcc mkbootfs.c -o mkbootfs -I../include
根據上面,先將依賴 編譯成 靜態庫後, 而後再來編譯 mkboot img 。
編譯成功。