工作环境及所需软件包

系统环境:Redhat Linux 9.0以上版本

交叉编译器:GNU Toolchain for ARM Processors 下载地址:http://www.codesourcery.com/gnu_toolchains/arm/download.html
其中第一项选择ARM EABI或ARM GNU/Linux,第二项选择IA32 GNU/Linux即可。

Android内核源代码 下载地址:http://code.google.com/p/android/downloads/list?can=1&q=&colspec=Filename+Summary+Uploaded+ReleaseDate+Size+DownloadCount注意该内核版本要与你选用的模拟器版本尽量一致。
此主题相关图片如下:

如何编译Android内核源码_第1张图片


Android SDK下载地址:http://developer.android.com/sdk/index.html

1.搭建交叉编译环境

1) 安装Android SDK: 将android-sdk_m5-rc14_linux-x86.zip解压缩到适当路径下即可使用。本文将其释放至/usr/local/android_sdk_linux路径下,并将其tools路径添加到PATH中

$ export PATH=$PATH:/usr/local/android_sdk_linux/tools

 2) 安装交叉编译器:将arm-2007q3-51-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 解压缩至/usr/local/arm-2007q3目录下,并将其bin路径添加到PATH中:

  $ export PATH=$PATH:/usr/local/arm-2007q3/bin

 3) 解压缩内核源代码:将linux-2.6.23-android-m5-rc14.tar.gz解压缩,得到kernel文件夹,本文中将其放置在/Android目录下。

2.获取内核编译配置文件

  交叉编译环境搭建好后需要得到android的内核编译参数的配置文件,该文件需要从android sdk 中的模拟器中得到。启动android模拟器,然后通过adb得到模拟器中提供的内核配置文件:

  $emulator &
  $adb pull /proc/config.gz

  这时候adb工具会连接模拟器,并从它里面下载一个叫做config.gz的文件到你的当前目录下。将其移动至kernel目录,解压该文件得到config,将其重命名为.config,这样就可以跳过make config而直接得到Makefile所需要的内核配置文件。

  $ gunzip config.gz
  $ mv config .config

3.修改Makefile

  首先修改第187行,将CROSS_COMPILE值改为arm-none-linux-gnueabi-,这是我们安装的交叉编译工具链的前缀,修改此处意在告诉make在编译的时候要使用该工具链。

然后修改第519、520行,将build id 值注释掉,因为目前版本的android内核不支持该选项。

如何编译Android内核源码_第2张图片

4.开始编译

  在kernel目录下执行make:

  $ make

  除个别警告外编译过程一切顺利,最终在/kernel/arch/arm/boot目录下面生成一个zImage,即为编译好的内核镜像了。

5.运行该镜像

  $emulator -kernel ~/android/kernel/arch/arm/boot/zImage


更多相关文章

  1. Window下android 模拟器SD卡的使用方法
  2. android 模拟器横竖屏切换
  3. android获取各路径下的文件流
  4. 如何编译 MTK 的模拟器(android)
  5. 在Android模拟器里安装apk
  6. Android logcat内核信息
  7. android 模拟器键盘控制键 以及 设置模拟器屏幕大小
  8. Android学习之系统默认路径

随机推荐

  1. MySQL中Like概念及用法讲解
  2. 解决windows service 2012阿里云服务器在
  3. 使用Visual Studio Code连接MySql数据库
  4. mysql添加备注信息的实现
  5. 深入理解r2dbc在mysql中的使用
  6. 浅谈Mysql哪些字段适合建立索引
  7. nacos无法连接mysql的解决方法
  8. mysql5.7 设置远程访问的实现
  9. MySQL查询优化之查询慢原因和解决技巧
  10. 详解mysql 使用left join添加where条件的