標籤:android c ext a strong com
說明:
我這裡用的是Android 4.2.2內建的交叉編譯工具。如果是使用host系統安裝的,我覺得應該也是可以的。但是沒有測試過。因為Android原始碼已經內建了,所以大多數情況下,不需要再安裝host系統的交叉編譯工具。
Android內建的交叉編譯工具有兩套,位於prebuilts/gcc/linux-x86/arm目錄下:
1. arm-eabi-4.6
2. arm-linux-androideabi-4.6
兩者的區別是:後者比前者新一些,具備一些新的特性。實際測試表明都可以用來編譯核心,都可以。似乎是後者更多地用於NDK。而且包含一些針對Android的特定修改。
對於如何編譯Android kernel (預設指的是給Android模擬器編譯),說明文檔位於Android原始碼下的
external/qemu/docs/ANDROID-KERNEL.TXT。大家可以參考。
環境準備:
1.將交叉編譯工具鏈的路徑加入系統路徑中
在~/.bashrc中加入如下語句(具體路徑請根據自己實際情況調整):
export PATH=$PATH:~/Android_4.2.2_r1.2/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin
2.重新登入終端或者使用source ~/.bashrc。
3.在命令列下執行 arm-eabi-gcc --version,如果沒有出錯資訊,說明配置完成。
編譯:
去google下載最新的kernel代碼。假設放在了goldfish目錄下,則執行以下命令編譯(假設你的模擬器是armv7,你的編譯工作站有8個core);
cd goldfish
export CROSS_COMPILE=arm-eabi-
export ARCH=arm
export SUBARCH=arm
make goldfish_armv7_defconfig
make -j8
如果編譯過程沒有出錯,則最後編譯出的arch/arm/boot/zImage,就是我們要的kernel,可以用來測試了。