研究了Android內核編譯,以下資料來自其他作者的總結,在此整理
原文出處:http://blog.csdn.net/davidbeckham2901/article/details/7448717
1.準備工作: (ubuntu1110 32位)
推薦使用ubuntu等linuxOS,下載好eclipse,安裝好JDK, 安裝好android的SDK(http://developer.android.com/sdk/index.html 和http://developer.android.com/sdk/installing.html 有詳細官方介紹), 在eclipse中成功打開android 手機模擬器即OK。
2.初始化編譯環境 :
http://source.android.com/source/initializing.html ,關注該網頁上的“installing required packages”,其中有的軟件包因爲版本問題而安裝不上,不用管它,之後遇到錯誤再單獨解決。
3.下載內核源碼:
http://source.android.com/source/building-kernels.html
android 2.3 內核 下載 $ git clone https://android.googlesource.com/kernel/goldfish.git 需要等待一段時間。
4.下載交叉編譯器:
編譯的過程中 用的交叉編譯器就不用 從android官網下載來的prebuilt文件夾中的東西了,
自己重新下載另外一個交叉編譯器: 網址http://www.codesourcery.com/gnu_toolchains/arm/download.html , 到該網頁選擇去下載 ARM EABI 類的這個軟件的tar.gz包,解壓縮後,找到bin文件夾,裏面應該有個arm-none-linux-gnueabi-
Makefile文件中修改爲
CROSS_COMPILE=arm-none-linux-gnueabi- 了不到一個小時就能編譯ok!
5.設置參數以及編譯:
$ export ARCH=arm
$ export SUBARCH=arm
$ export CROSS_COMPILE=arm-eabi-
$ cd goldfish // 進入下載的源代碼目錄
$ git checkout <commit_from_first_step> //這個步驟我沒有做,不知道幹嘛用的
$ make goldfish_defconfig
$ make
7.測試:
最後,測試一下剛纔編譯的內核:
emulator -avd myavd -kernel ~/goldfish/arch/arm/boot/zImage
emulator若系統找不到,可以去android SDK中某文件夾找到,加入系統PATH即可。 -avd後面的參數 myavd即爲模擬器的名字,這個我是在eclipse中的模擬器管理中新建的一個模擬器,用那個模擬器的名字即可。 -kernel後面的參數就找到剛纔編譯出的內核的路徑。
若啓動模擬器失敗,可嘗試關閉後再啓動。第一次啓動模擬器時可能需要等待比較長的時間,3分鐘到15分鐘不等。