前言: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 接下来就可以调试了!