Mac OS X 編譯Android內核源代碼

我在Mac電腦上編譯Android的內核源代碼遇到了很多問題,下面對遇到的問題進行一個簡單的總結,但願對你們有所幫助。linux


一、Android編譯內核的源代碼和編譯Rom的源代碼是分開的,所以若是要編譯內核的話,須要單獨下載。android

用git從谷歌的網站上克隆:git clone http://android.googlesource.com/kernel/goldfish.gitgit

注意這裏不要用https,我用這個的時候常常卡死,下載不了,記得必定要用http。 ide


二、下載完成後,你會發現整個目錄是空的,這是由於當前默認分支是master,先用git branch -a命令查看有哪些分支:工具

remotes/origin/HEAD -> origin/masterpost

remotes/origin/android-goldfish-2.6.29網站

remotes/origin/android-goldfish-3.4ui

remotes/origin/linux-goldfish-3.0-wipgoogle

remotes/origin/masterspa

這裏咱們選擇android-goldfish-3.4分支,用git checkout android-goldfish-3.4切換到該分支,切換的時候會進行解壓,解壓完成後,就會發現目錄下有不少文件了。


三、打開Makefile文件,找到:

ARCH ?= $(SUBARCH)

CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)

改爲:

ARCH ?=arm

CROSS_COMPILE ?=arm-eabi-

注意 ?=arm 千萬不能有空格,不然會出現Make:...../kernel/goldfish/arch/arm: Is a directory. Stop.這樣的錯誤


四、設置編譯工具的環境變量,這裏須要用到Android源碼裏面的交叉編譯工具:

export PATH=$PATH:~/Android/android_source/prebuilts/gcc/darwin-x86/arm/arm-eabi-4.7/bin

注意:根據你下載的Android源代碼版本不一樣,可能arm-eabi-4.7 存放的目錄和版本號會有所不一樣,同時要根據你是Linux系統仍是Mac系統要選擇不一樣的操做系統,由於個人是OS X系統,選擇的是darwin-x86


五、修改硬件配置文件goldfish_armv7_defconfig

執行命令:make goldfish_armv7_defconfig

注意這裏千萬不要選擇 make goldfish_defconfig ,不然你後面模擬器沒法正常啓動。

若是你編譯過程當中遇到下面錯誤:

scripts/mod/mk_elfconfig.c:4:17: error: elf.h: No such file or directory,說明你的電腦缺乏 elf.h頭文件,請到網站http://www.rockbox.org/tracker/9006?getfile=16683 將裏面的內容複製下來,保存爲elf.h,而後將它保存到scripts/mod 目錄下,同時將mk_elfconfig.c,modpost.h中的<elf.h>修改成"elf.h"


六、而後編譯整個內核

make

編譯成功後,會看到以下信息

OBJCOPY arch/arm/boot/zImage

Kernel: arch/arm/boot/zImage is ready


7. 而後用模擬器加載新編譯好的內核


emulator -kernel arch/arm/boot/zImage

打開關於手機,就能夠看到新編譯好的內核


172139547.jpg

相關文章
相關標籤/搜索