官网:http://source.android.com/source/building-kernels.html

下载地址:https://android.googlesource.com/?format=HTML

一般下载:goldfish版本的

1.建立目录

mkdir kernel

2.解压文件(goldfish-android-goldfish-3.4.tar.gz)到目录下

tar zxvf goldfish-android-goldfish-3.4.tar.gz -C kernel

文件目录结构

编译android内核源码_第1张图片

3.修改文件夹中的Makefile文件中的编译环境

VIM

# ARCH ?= (SUBARCH)

# CROSS_COMPILE?=
ARCH ?= arm #体系结构为arm

CROSS_COMPILE ?= arm-eabi- #交叉编译工具链前缀

或者

$ export ARCH=arm$ export SUBARCH=arm$ export CROSS_COMPILE=arm-eabi-

4.导出交叉编译工具目录到$PATH环境变量中去

这步没做,下面报错

export PATH=$PATH:/media/M_hM_=M_M_dM__M_6/Download/442/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin

5.编译

切换到kernel目录 (cd kernel)

命令:make goldfish_defconfig (make goldfish_armv7_defconfig)

2.3版本以后的体系架构是用的是armv7

命令:make -j16

错误1:

/kernel_dir ...../arch/arm: 是一个目录。 停止

修改:

ARCH ?= arm<空格>

删除空格

错误2:

/bin/sh: 1: arm-eabi-gcc: not found 导出交叉编译工具目录到$PATH环境变量中去

导出交叉编译工具目录到$PATH环境变量中去:export PATH=$PATH:/media/M_hM_=M_M_dM__M_6/Download/442/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin

6.编译成功

编译android内核源码_第2张图片

7.在模拟器中运行编译好的内核

export PATH=$PATH:/media/M_hM_=M_M_dM__M_6/Download/442/out/host/linux-x86/bin
export ANDROID_PRODUCT_OUT=/media/M_hM_=M_M_dM__M_6/Download/442/out/target/product/generic

8.在后台中指定内核文件启动模拟器

切换到android源码目录 运行命令:emulator -kernel kernel/arch/arm/boot/zImage &

错误1:

编译android内核源码_第3张图片

解决:

source build/envsetup.sh

lunch sdk-eng

错误2:黑屏

原因:
2.3版本以后的体系架构是用的是armv7了,

解决:将make goldfish_defconfig改成make goldfish_armv7_defconfig


9.结果:


编译android内核源码_第4张图片


更多相关文章

  1. [置顶] 入门Android开发--总目录
  2. Android 140款Android开源优秀项目源码
  3. Android源码可行的下载步骤
  4. Android中SparseArray源码实现
  5. 非常不错的资金管理系统android版客户端源码
  6. (两百八十七)Android 更新R aosp源码
  7. 修改源码 自动接听
  8. Android NDK 提供的交叉工具链手动编译源码

随机推荐

  1. 万字长文带你了解最常用的开源 Squid 代
  2. Android 离线log 保存工具类
  3. Android创建桌面快捷方式几种方法
  4. Android(安卓)ListView getView多次不规
  5. Android系统服务详解-android学习之旅(95)
  6. “罗永浩抖音首秀”销售数据的可视化大屏
  7. [Android--Structure]App系统权限permiss
  8. Android ListAdapter的高级功能
  9. 【Android FFMPEG 开发】FFMPEG 获取编解
  10. Android与JavaScript之间的相互调用