環(huán)境:Ubuntu10.10 Android2.2.2_r1 android-gldfish-2.6.29
0 說明
Android2.2的platform和kernel是分別的項目,要分別下載編譯。本文是Ubuntu10.10 環(huán)境下android 內(nèi)核(goldfish-2.6.29)的編譯。
讀者:希望深入Android底層開發(fā)者,如果只是ANDROID應(yīng)用開發(fā)者,不用如此麻煩,直接下載現(xiàn)成的SDK以及其他相應(yīng)工具即可。
一、環(huán)境準(zhǔn)備
同《Ubuntu10.10下編譯Android2.2平臺》中環(huán)境的準(zhǔn)備。
二、下載Android2.2 Kernel – Goldfish
Android有各種平臺的Kernel版本,其中有一個Goldfish的模擬器使用的Kernel。
獲取android-gldfish-2.6.29
可以到http://android.git.kernel.org,點擊kernel/common.git看當(dāng)前的版本,筆者選擇了android-gldfish-2.6.29。
下載android-gldfish-2.6.29,執(zhí)行
haili@haili-desktop:~$cd android-2.2.2_r1
haili@haili-desktop:~/android-2.2.2_r1$git clone git://android.git.kernel.org/kernel/common.git –b android-2.6.35 kernel
haili@haili-desktop:~/android-2.2.2_r1$cd kernel
haili@haili-desktop:~/android-2.2.2_r1/kernel$git checkout android-gldfish-2.6.29
三、獲取配置信息
從prebuilt的模擬器中獲取編譯配置信息
haili@haili-desktop:~/android-2.2.2_r1/kernel$emulator -avd AVD_HVGA
haili@haili-desktop:~/android-2.2.2_r1/kernel$adb pull /proc/config.gz
haili@haili-desktop:~/android-2.2.2_r1/kernel$gunzip config.gz
haili@haili-desktop:~/android-2.2.2_r1/kernel$cp config .config
四、編譯Android Kernel
編譯kernel,需要配置信息,這在上段已經(jīng)設(shè)置;
另外要指定ARCH,Goldfish還是模擬的ARM,這里指定ARCH=arm;
編譯器也要指定,這里用prebuilt里的arm-eabi-4.4.0。
所以,執(zhí)行
haili@haili-desktop:~/android-2.2.2_r1$cd kernel
haili@haili-desktop:~/android-2.2.2_r1/kernel$make ARCH=arm CROSS_COMPILE=~/android-2.2.2_r1/prebuilt/linux-x86/toolchains/arm-eabi-4.4.0/bin/arm-eabi- -j2
編譯完成,最后生成
Kernel: arch/arm/boot/zImage is ready
五、驗證
指定到編譯生成的內(nèi)核,執(zhí)行
$cd ~/android-2.2.2_r1
haili@haili-desktop:~/android-2.2.2_r1$emulator –kernel kernel/arch/arm/boot/zImage –avd AVD_HVGA
在啟動的模擬器里,進入Setting查看內(nèi)核版本是否是你剛剛編譯的。