android内核编译

上一篇文章记录了android源码的编译过程:http://blog.csdn.net/jiguangcanhen/article/details/42081229

但是我们在编译的过程中,使用的是google给我们编译好的内核源码,位置在:/prebuilt/android-arm/kernel/kernel-qemu

那么我们怎么编译自己的内核源码呢?

首先下载内核源码:内核源码

下载了内核源码之后,我再android源码的kernel文件夹中,建立了一个文件夹private_guo,然后把下载的文件夹放入其中。

进入内核源码根目录:/usr/local/Android/Android_2.3.7/kernel/private_guo/kernel

修改Makefile文件:sudo gedit Makefile

如图:

技术分享

之后,就可以执行编译命令了,这个时候你的shell应该在内核源码的根目录:

make goldfish_defconfig

make


然后会发现一个错误:

找不到arm-eabi-gcc

那么就下载这个工具:http://pan.baidu.com/s/1eQ3WSU2

大家也可以去git上面拿:https://github.com/android/platform_prebuilt/tree/master/linux-x86/toolchain/arm-eabi-4.4.3 

我这里是提供了整个的prebuild,大家只要拿到里面的platform_prebuilt-master\linux-x86\toolchain\arm-eabi-4.4.3就可以了。

然后把它放入到/usr/lib中去就可以了,然后大家配置一下环境变量就可以了。

sudo gedit /etc/profile

然后在CLASSPATH中添加/usr/lib/arm-eabi-4.4.3/lib

在PATH中添加/usr/lib/arm-eabi-4.4.3/bin

然后再执行一下source /etc/profile来应用环境变量(懒得重启了)。

这样,再次执行上面的编译命令,这个时候又发现一个错误:

include/asm is a directory but a symlink was expected

这个也很简单:linux/include/asm 文件夹是内核编译过程中创建的,创建结果就是一个指向文件夹asm-arm的链接,表明该系统的平台是arm架构的,而编译系统内核之前,是没有asm这个链接的,所以,在编译过程中,创建该链接时文件名字与asm文件夹的名字发生冲突,报错了

这样之后,再次执行编译命令:

出现OBJCOPY arch/arm/boot/zImage

Kernel: arch/arm/boot/zImage is ready

这样就说明编译成功了。

下面就是用我们的来启动模拟器了:

export PATH=$PATH:/usr/local/Android/Android2.3.7/out/host/linux-x86/bin

export ANDROID_PRODUCT_OUT=/usr/local/Android/Android_2.3.7/out/target/product/generic

emulator -kernel ./kernel/private_guo/kernel/arch/arm/boot/zImage

等一会,我们的模拟器就启动起来了:

技术分享

ok,这样,我们的内核也就编译完成了。good luck!


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。