您的位置:首页 > 移动开发 > Android开发

Android Kernel下载编译

2017-02-03 14:24 567 查看
基于android5.1.1系统源码,清华镜像站https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/下载系统源码和kernel3.4源码。

以下编译的是arm架构的kernel,所以系统源码编译出来的也必须是arm架构。

1.内核下载(清华镜像)

在$android_source目录下

mkdir Kernel  

cd  Kernel

common方式

git clone https://aosp.tuna.tsinghua.edu.cn/kernel/common.git
goldfish方式(以此为例)

git clone https://aosp.tuna.tsinghua.edu.cn/kernel/goldfish.git
带下载完成,进入goldfish目录,执行以下命令查看分支

git branch -a

然后checkout内核代码

git checkout -b android-goldfish-3.4 origin/android-goldfish-3.4

2.编译环境准备

将prebuilt工具添加到环境变量中以备后续使用

export PATH=$(pwd)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH  

接着配置其他必要的环境变量:

export ARCH=arm  

export SUBARCH=arm  

export CROSS_COMPILE=arm-eabi-

3.开始编译

编译配置,在arch/arm/configs路径下找到两个配置文件:

goldfish_armv7_defconfig

goldfish_defconfig

make goldfish_defconfig (可以通过编译,但启动模拟器到不了桌面,是内核版本配置的原因)



make goldfish_armv7_defconfig(android高版本,推荐,有太多配置,手动配置兼职要命,需要裁剪,编辑arch/arm/configs/goldfish_armv7_defconfig就行)

基于文本选单的配置界面

make menuconfig

编译

make

映像的输出为:arch/arm/boot/zImage,这样就通过默认的配置完成了Android内核的编译。

编译时可能会遇到的错误:

ERROR: the symlink include/asm points to asm-x86 but asm-arm was expected

       set ARCH or save .config and run 'make mrproper' to fix it

解决方案有俩:

(1).按提示,运行make mrproper命令。

(2).将内核目录下,即goldfish/include下的asm 目录删除以后,再编译即可。

include下的asm 文件夹是内核编译过程中创建的(在你编译之前,还没有创建,但是现在还没有编译,里面已经有了),它是一个这个目录下的asm-arm目录的链接,表明该系统的平台是arm 架构的,在编译过程中,系统会创建该链接,但此时已经有了,这样会与asm 文件夹的名字发生冲突,把它删掉就好了。

误删除,恢复所有代码,命令:

git ls-files -d | xargs -i git checkout {}

4.kernel裁剪(如果需要裁剪的话)

裁剪要用到一个很有用的命令:

make menuconfig

上述命令的运行需要以下库,必须提前安装:

sudo apt-get install ncurses-dev

5.编译成功后,运行模拟器(前提是先选择编译平台sourc
a3f1
e build/envsetup.sh和lunch,才能运行emulator)

 emulator -kernel arch/arm/boot/zImage &

&在后面,表示脱离命令行在后台运行,但没效果,终于看到android 桌面,成功了!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  kernel android