版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/47807089
首先需要知道自己android内核的版本,我们android系统是android 4.0.1,内核版本为2.6.29.
由于我们在下载android源代码的时候默认是不带内核源码的,因为他内置了一个编译好的zImage内核镜像,所以,如果要编译内核源码的时候,我们需要下载我们当前版本的内核源码.注意,这里的内核源码并不是Linux官网的内核源码,而是谷歌定制的内核.
我们首先需要在android源代码根目录下新建一个kernel目录.
mkdir kernel
cd kernel
git clone http://android.googlesource.com/kernel/goldfish.git
这个需要等待一段时间,下载完成之后,我们使用如下命令.
git branch -a
//找到自己需要的内核源码版本
git checkout remotes/origin/android-goldfish-2.6.29
好了,完成之后,我们就可以编译我们的内核源代码了.在编译之前,我们需要修改一个内核源码的根目录下的Makefile文件,也就是老罗提到的修改两个部分:
ARCH ?= arm
CROSS_COMPILE ?= arm-eabi-
在make之前,我们需要将Android提供的交叉编译链添加到我们的环境变量中,android提供的交叉编译链在目录
/prebuilt/linux-x86/toolchain 中.
下面我们使用下面的命令进行编译:
export PATH=$PATH:~/android/prebuild/linux-x86/toolchain/arm-eabi-4.4.3/bin
//android2.3以下使用这个
make goldfish_defconfig
//android2.3以上使用这个
make goldfish_armv7_defconfig
//多线程编译
make -j4
等出现zImage生成成功,表示编译完成.
最后,指定内核运行我们的虚拟机.
emulator -kernel ./kernel/goldfish-android/arch/arm/boot/zImage
如果想要在后台运行这个虚拟机来启动adb的话,则需要在命令后面添加”&”.
emulator -kernel ./kernel/goldfish-android/arch/arm/boot/zImage &