自己动手编译Android内核-美化包
2013-08-20 16:24
411 查看
一直说想给用的G2编译一个Android的内核然后一直懒得研究,这几天装Gentoo倒腾PC的内核于是我说干脆手机也编译一个吧~(早已对CPU只有368-768-806MHz对选择表示十分不爽= =试着加一点中间档)
我选择的是最后一种(我是拿下来自己编译的,也可以用预编译的版本)。
注意,一定要用和内核版本相同的config,否则会出一堆诡异的问题(而且解决它们超出我的能力范围)
会有少许新的配置出现,看着选吧(如果新配置很多就说明你的config有问题了,自重小心)
看着改一些东西,比如说把werror(也就是FORCE_WARNING_AS_ERROR)去掉(我不知道为什么要开werror)
编译内核
查看了一下发现gcc在toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin,prefix是arm-linux-androideabi-。
于是
编译起来~
于是就可以用ClockworkMod的Recovery刷内核了,记得先备份原来的boot分区~ Good Luck~
注意
用r5b以上的NDK编译出来的内核模块会失败(提示Unknown symbol _GLOBAL_OFFSET_TABLE_),直接影响是没有WLAN,在Makefile改一下,对模块的编译加上-fno-pic参数就可以了。
准备工具链
由于我们只需要编译内核而不需要依赖别的组件,所以对toolchain(NDK)的选择上宽松得多。大体来讲有这样几种可能性:自己编译arm-eabi的gcc toolchain,使用Sourcery的toolchain,使用Google提供的NDK构建toolchain,或者使用第三方(比如crystax)修改过的NDK。我选择的是最后一种(我是拿下来自己编译的,也可以用预编译的版本)。
准备内核源码
我用的是CyanogenMod改过的2.6.32,从git://github.com/CyanogenMod/htc-kernel-msm7x30可以取得(从git://github.com/tyeken8/htc-kernel-msm7x30可以拿到我修改过的版本)导出内核配置
有两种方式导出:从/proc/config.gz或者用kernel提供的脚本注意,一定要用和内核版本相同的config,否则会出一堆诡异的问题(而且解决它们超出我的能力范围)
/proc/config.gz
extract-ikconfig
配置内核
编译内核
查看了一下发现gcc在toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin,prefix是arm-linux-androideabi-。
于是
打包内核
我是拿的CM7的内核升级包来改,也可以使用这篇的方法(注意android源码从android.git.kernel.org迁移到android.googlesource.com了)注意
用r5b以上的NDK编译出来的内核模块会失败(提示Unknown symbol _GLOBAL_OFFSET_TABLE_),直接影响是没有WLAN,在Makefile改一下,对模块的编译加上-fno-pic参数就可以了。
相关文章推荐
- 使用自己编译的在Android上运行的内核(Linux Kernel)
- 自己动手编译Android源码(超详细)
- Android 自己动手编译android源码
- 使用自己编译的在Android上运行的内核(Linux Kernel)
- 自己动手编译最新Android源码及SDK
- 自己动手编译Linux2.6.25.10内核
- 自己动手编译Android 8.0源码
- 自己动手编译Android源码
- 自己动手编译Android 8.0源码
- android-----模拟器加载自己编译的内核(适用于驱动练习)
- 自己动手编译最新Android源码及SDK
- 自己动手编译中兴V880内核。
- 自己动手编译最新Android源码及SDK
- 自己动手编译Android源码
- 一---Android-SDK系列文章(3) ---java(自己动手编译、运行Java程序)
- 自己动手编译最新Android源码及SDK
- 自己动手编译android gdbserver 最新版 推荐
- 自己动手编译了一个内核的测试模块
- android-----模拟器加载自己编译的内核(适用于驱动练习)
- 自己动手编译Android源码(超详细)