编译android源码时并不会自动编译android内核,因此需要手动编译这部分代码。编译内核所用的时间比编译android源码要少得多。

1、确定内核版本
建立一个存放android内核源码的kernel目录,进入该目录,并使用如下命令下载内核源码

引用 $ git clone https://android.googlesource.com/kernel/common.git
$ git clone https://android.googlesource.com/kernel/goldfish.git
$ git clone https://android.googlesource.com/kernel/msm.git
$ git clone https://android.googlesource.com/kernel/omap.git
$ git clone https://android.googlesource.com/kernel/samsung.git
$ git clone https://android.googlesource.com/kernel/tegra.git
我只下载了common.git与goldfish.git,以goldfish为例,进入goldfish目录 引用 root@ubuntu:/work_dir/kernel# ls
common goldfish
root@ubuntu:/work_dir/kernel# cd goldfish/在命令行输入以下命令,显示所有分支及当前所在的分支:
引用 root@ubuntu:/work_dir/kernel/goldfish# git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/android-goldfish-2.6.29
remotes/origin/master
输入以下命令选择当前的最新版本(goldfish为android的模拟器描述的CPU):
引用 root@ubuntu:/work_dir/kernel/goldfish# git checkout -b android-goldfish-2.6.29 origin/android-goldfish-2.6.29
再次输入命令git branch -a,将会显示刚刚选择的最新分支,表示目前工作在这个被选择的分支上,输出如下:
引用 root@ubuntu:/work_dir/kernel/goldfish# git branch -a
* android-goldfish-2.6.29
master
remotes/origin/HEAD -> origin/master
remotes/origin/android-goldfish-2.6.29
remotes/origin/master
2、设定环境变量
在编译android内核时,需要使用交叉编译器。在所下载的android源码树中有一个prebuilt文件夹,包含了编译内核所需的交叉编译工具,因此要将其设置到环境变量中去,以方便使用。打开用户目录下的.bashrc文件,在后面添加如下代码
引用 export PATH=$PATH:/work_dir/android2.3.7_r1/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin
export ARCH=arm
保存并退出,通过以下命令在用户目录下进行更新。
引用 source /etc/bash.bashrc
由于有可能在添加之后没有及时更新,导致在编译时提示错误,如找不到交叉编译工具目录等,因此这里需要更新(如果加入了环境变量仍在编译时提示找不到交叉编译工具目录,可以尝试多更新几次)。

3、设定交叉编译参数

在编译之前还需要设定编译时所使用的交叉编译参数。

首先,打开android/kernel/goldfish/目录下的Makefile文件,找到CROSS_COMPILE变量,将其指向android源码提供的prebuilt中的arm-eabi编译器,代码如下所示:
引用 CROSS_COMPILE ?= arm-eabi-
之后找到如下代码:
引用 LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\

$(call ld-option, -Wl$(comma)--build-id,)) 将其删除或注释掉(建议注释掉即可,以备以后会使用到),并添加一个空的LDFLAGS_BUILD_ID定义,如下所示:
引用 #LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\
# $(call ld-option, -Wl$(comma)--build-id,))
LDFLAGS_BUILD_ID =
4、编译内核源码
设置完之后,就是编译android内核源码了,进入goldfish目录,输入以下命令

引用 $make goldfish_defconfig
$make
第一条命令为编译时的默认配置文件。如果不执行这条命令,编译时可能会提示“找不到配置文件”。第一条命令执行完后,会在goldfish目录下生成一个.config文件。

之后便是一段时间的等待了。。。时间不长,一会即可编译好,比编译android源码时间要少得多。

5、编译完成之后,会在“kernel/goldfish/arch/arm/boot/”目录下生成名为zImage的文件。

如果你已经编译了SDK,可以进入SDK所在目录,使用 "- kernel" 加载编译出来的zImage启动模拟器
引用 root@ubuntu:/work_dir/android2.3.7_r1/out/host/linux-x86/sdk/android-sdk_eng.root_linux-x86/tools# ./emulator -kernel /work_dir/kernel/goldfish/arch/arm/boot/zImage

更多相关文章

  1. Rockie's Android(安卓)Porting Guide(2)——Add USB WIFI to your
  2. Android的源代码结构
  3. 【Android】NDK的使用常见问题
  4. Android内核编译
  5. Ubuntu上编译Android过程
  6. android编译过程详解(二)
  7. 为Android加入busybox工具
  8. android内核与驱动
  9. Android属性之build.prop生成过程分析

随机推荐

  1. not using the 2- or 3-argument View co
  2. Android基础之Activity四种启动模式
  3. android关于输入法弹出时的UI变动
  4. android 自定义信息提示框
  5. Mac系统下Android(安卓)SDK无法更新解决
  6. Android设置图片圆角的方法
  7. android 获取sdcard路径
  8. android绘制几何图形的实例代码
  9. android全面开发(有链接到对应的知识)
  10. Android中toolbar+DrawerLayout+Navigati