🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
在编译Android内核源代码之前,我们首先要修改它的Makefile文件。Android模拟器所使用的CPU体系结构是arm的,因此,我们需要将Makefile文件中ARCH变量的值设置为arm。又由于我们是在PC上为Android模拟器编译内核的,因此,还需要在Makefile文件中指定交叉编译工具,即修改里面的CROSS_COMPILE变量的值。 打开Android内核源代码目录下的Makefile文件,并且找到下面的内容: ~~~ export KBUILD_BUILDHOST := $(SUBARCH) ARCH ?= $(SUBARCH) CROSS_COMPILE ?= ~~~ 将后面两行修改为: ~~~ ARCH ?= arm CROSS_COMPILE ?= arm-eabi- ~~~ Android源代码目录为我们准备了一个适用于编译Android模拟器内核的交叉编译工具,它位于Android源代码目录下的prebuilt/linux-x86/toolchain子目录中。在Makefile文件中,我们将ARCH变量的值设置为arm,表示编译的Linux内核是适用于arm体系结构的;而将CROSS_COMPILE变量的值设置为arm-eabi-,表示所使用的交叉编译工具名称是以“arm-eabi-”来作为前缀的。 为Android模拟器编译内核分为三个步骤。其中,第一步是将交叉编译工具所在的目录添加到环境变量PATH中;第二步是修改硬件配置文件goldfish_defconfig1;第三步是执行make命令。 ~~~ USER@MACHINE:~/Android/kernel/goldfish$ export PATH=$PATH:~/Android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin USER@MACHINE:~/Android/kernel/goldfish$ make goldfish_defconfig USER@MACHINE:~/Android/kernel/goldfish$ make ~~~ 编译成功后,可以看到下面两行输出: ~~~ OBJCOPY arch/arm/boot/zImage Kernel: arch/arm/boot/zImage is ready ~~~ 这表明编译好的Android内核镜像文件zImage位于Android内核源代码目录下的arch/arm/boot子目录中。 注: 1. 取决于Android模拟器的CPU体系架构版本,如果是arm v5版本的,则使用goldfish_defconfig文件;如果是arm v7版本的,则使用goldfish_armv7_defconfig文件。可以使用Android源代码目录下的prebuilt/android-arm/kernel子目录中的kernel-qemu文件来启动Android模拟器,然后使用adb工具来连接Android模拟器,并且通过cat命令来查看/proc/cpuinfo文件的内容,就可以知道当前所使用的Android模拟器的CPU体系架构版本。