说明:
我这里用的是Android 4.2.2自带的交叉编译工具。如果是使用host系统安装的,我觉得应该也是可以的。但是没有测试过。因为Android源代码已经自带了,所以大多数情况下,不需要再安装host系统的交叉编译工具。
Android自带的交叉编译工具有两套,位于prebuilts/gcc/linux-x86/arm目录下:
1. arm-eabi-4.6
2. arm-linux-androideabi-4.6
两者的区别是:后者比前者新一些,具备一些新的特性。实际测试表明都可以用来编译内核,都可以。似乎是后者更多地用于NDK。而且包含一些针对Android的特定修改。
对于如何编译Android kernel (默认指的是给Android模拟器编译),说明文档位于Android源代码下的
external/qemu/docs/ANDROID-KERNEL.TXT。大家可以参考。
环境准备:
1.将交叉编译工具链的路径加入系统路径中
在~/.bashrc中加入如下语句(具体路径请根据自己实际情况调整):
export PATH=$PATH:~/Android_4.2.2_r1.2/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin
2.重新登录终端或者使用source ~/.bashrc。
3.在命令行下执行 arm-eabi-gcc --version,如果没有出错信息,说明配置完成。
编译:
去google下载最新的kernel代码。假设放在了goldfish目录下,则执行以下命令编译(假设你的模拟器是armv7,你的编译工作站有8个core);
cd goldfish
export CROSS_COMPILE=arm-eabi-
export ARCH=arm
export SUBARCH=arm
make goldfish_armv7_defconfig
make -j8
如果编译过程没有出错,则最后编译出的arch/arm/boot/zImage,就是我们要的kernel,可以用来测试了。