最近在做Android的一個項目,需要進行核心的編譯,參考了官網上以及其他部落格的教程,把自己編譯核心的步驟記錄下來。
1.下載Android模擬器的專用核心代碼goldfish
之前我已經下載好了Android的原始碼,並把源碼放在了~/android目錄下面。
利用Ctrl+Alt+t開啟shell終端,輸入下面命令:
cd ~/android
git clone http://android.googlesource.com/kernel/goldfish.git
cd goldfish
git branch -a
git checkout origin/android-goldfish-2.6.29
2.編譯goldfish核心代碼
在goldfish目錄下面利用vim開啟Makefile檔案,進行如下修改:
ARCH ?=(SUBARCH)
CROSS_COMPILE ?=
修改為:
ARCH ?=arm
CROSS_COMPILE ?=arm-eabi-
儲存後退出。
注意:ARCH
?=arm中的arm後邊不要有空格,不然就會出現下面的錯誤:
Make:...../kernel/goldfish/arch/arm:
Is a directory. Stop.
在shell中利用export命令匯出交叉編譯工具:
export PATH=$PATH:~/android/prebuild/linux-x86/toolchain/arm-eabi-4.4.3/bin
下面開始執行make命令:
make goldfish_armv7_defconfig
註:用$make goldfish_defconfig這樣配置也可以編譯通過,模擬器也可以正常啟動,但是Android的開機畫機就顯示不了,模擬器啟動後一直顯示的是黑屏,具體的原因我不是很清除,不過就是用goldfish_defconfig這個設定檔編譯出的問題,我最後換成了goldfish_armv7_defconfig後進行編譯,模擬器利用goldfish_armv7_defconfig編譯出來的核心啟動時就可以正常進入系統了。
由於我需要讓核心支援動態載入和卸載.ko模組,執行下面命令(不需要的可以直接跳過):
make menuconfig
把Enable loadable module support項按y選上
然後按斷行符號進入選上前三項
退出時選擇yes
最後在shell中執行make命令:
make
執行上面的步驟就可以完成Android核心代碼的編譯。編譯後的核心為goldfish/arch/arm/boot/zImage