前言:2014-08-30記錄在hi baidu上,現在移過來
前提:JDK、SDK都已配置OK!
一、使用git下載,執行命令
cd ~/Android/AndroidKernel
git clone https://android.googlesource.com/kernel/goldfish.git
大約有600多MB,如果有穩定的代理把https換成http。
二、獲取源碼,我這裏獲取的是3.4的源碼
cd goldfish
git branch -a 會列出goldfish內核所有的版本
git checkout -t remotes/origin/android-goldfish-3.4 -b goldfish3.4
三、獲取交叉編譯工具
cd ..
git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6
四、編譯內核
1. export剛纔下載的交叉編譯工具的目錄到$PATH中:
export PATH=$PATH:~/Android/AndroidKernel/arm-eabi-4.6/bin
2. 修改goldfish目錄下Makefile文件:
# ARCH ?= (SUBARCH)
# CROSS_COMPILE?=
ARCH ?= arm
CROSS_COMPILE ?= arm-eabi-
3. 編譯
make ARCH=arm goldfish_defconfig (或者:make ARCH=arm goldfish_armv7_defconfig)
make ARCH=arm menuconfig (修改配置選項)
進入內核配置界面,勾選下列選項
[*] Kernel hacking
[*] Compile the kernel with debug info
[*] KGDB: kernel debugging with remote gdb ---> (這個我始終沒找到)
[*] Enable dynamic printk() call support
make
編譯成功:
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
五、加載剛編譯的內核
啓動模擬器加載內核
emulator -show-kernel -kernel ~/Android/AndroidKernel/goldfish/arch/arm/boot/zImage @Android2.3 -no-skin -logcat *:v -qemu
新打開一個Terminal查看內核版本
adb devices
adb shell
cat /proc/version
六、啓動arm-eabi-gdb調試內核
啓動一個帶監聽端口的模擬器
emulator -show-kernel -kernel ~/Android/AndroidKernel/goldfish/arch/arm/boot/zImage @Android2.3 -no-skin -logcat *:v -qemu -gdb tcp::12345,ipv4
新打開一個Terminal用於調試,執行以下命令
export PATH=$PATH:~/Android/AndroidKernel/arm-eabi-4.6/bin/arm-eabi-gdb
target remote localhost:12345 接下來就可以調試了!