根据http://blog.csdn.net/luoshengyang/article/details/6564592博客内容对android4.2的编译

从源代码树下载下来的最新Android源代码,是不包括内核代码的,也就是Android源代码工程默认不包含Linux Kernel代码,而是使用预先编译好的内核,也就是prebuilt/qemu_kernel/arm/kernel-qemu文件。以下介绍如下编译android的Linux内核。

一、首先,根据http://source.android.com/source/initializing.html下载Android源代码,并进行编译。

二、然后,下载Linux Kernel for Android源代码。

1、使用GIT工具下载,执行以下命令:

USER-NAME@MACHINE-NAME:~/my_android$ mkdir kernel

USER-NAME@MACHINE-NAME:~/my_android$ cd kernel

USER-NAME@MACHINE-NAME:~/my_android/kernel$ git clone https://android.googlesource.com/kernel/goldfish.git
     同样是经过漫长的等待后,在kernel目录下有一个goldfish目录,Linux内核代码就在这里了。
2、下载完成后,可以查看下载的内核代码版本:
     USER-NAME@MACHINE-NAME:~/my_android/kernel$ cd  goldfish
     USER-NAME@MACHINE-NAME:~/my_android/kernel/goldfish$ git  branch
     * master
3、 上面得到的是主线上的内核源代码,现在我们需要适用于模拟器用的内核,因此,我们需要checkout goldfish版本:
      USER-NAME@MACHINE-NAME:~/my_android/kernel/goldfish$ git branch -a       

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/android-goldfish-2.6.29
  remotes/origin/android-goldfish-3.4
  remotes/origin/linux-goldfish-3.0-wip
  remotes/origin/master

      选择remotes/origin/android-goldfish-3.4:
      USER-NAME@MACHINE-NAME:~/my_android/kernel/goldfish$ git checkout remotes/origin/android-goldfish-3.4
三、编译内核代码。
1、导出交叉编译工具目录到$PATH环境变量中去:
USER-NAME@MACHINE-NAME:~/my_android/kernel/goldfish$ export PATH=$PATH:~/my_android/prebuilds/gcc/linux-x86/arm/arm-eabi-4.6/bin
或者
USER-NAME@MACHINE-NAME:~/my_android/kernel/goldfish$ export PATH=$PATH:~/my_android/prebuilds/gcc/linux-x86/arm/arm-eabi-4.6/bin
2、 使用如下的命令来构建goldfish内核
$ export ARCH=arm
$ export SUBARCH=arm
$ export CROSS_COMPILE=arm-eabi-


3、现在是要得到android的内核编译参数的配置文件的时候了,该文件需要从已经安装好的android的模拟器
中得到才行。所以安装android的sdk也是必须的,这一步不太明白的朋友可以参考我以前发的android
命令行体验的文章。
首先启动android模拟器,然后通过adb得到模拟器中提供的内核配置文件:
USER-NAME@MACHINE-NAME:emulator &
USER-NAME@MACHINE-NAME:adb pull /proc/config.gz .
这时候adb工具会连接模拟器,并从它里面下载一个叫做config.gz的文件到你的当前目录下。
把它拷贝到你的kernel/goldfish目录:
USER-NAME@MACHINE-NAME:cd ~/my_android/kernel/goldfish
USER-NAME@MACHINE-NAME:cp ~/config.gz
解压缩该文件,并重命名为.config,这一步做了就可以跳过make menuconfig之类的内核参数设置
动作了。
   USER-NAME@MACHINE-NAME:gunzip config.gz
USER-NAME@MACHINE-NAME:mv config .config
该步骤比较重要,若通过make goldfish_defconfig产生的.config来编译的内核可能无法在emulator中运行。
4、 开始编译:
      USER-NAME@MACHINE-NAME:~/my_android/kernel/goldfish$ make goldfish_defconfig(若操作了第3步,则该命令可省略)
USER-NAME@MACHINE-NAME:~/my_android/kernel/goldfish$ make
     
     编译成功后,可看到下面两行:
      OBJCOPY arch/arm/boot/zImage
      Kernel: arch/arm/boot/zImage is ready
      在执行make命令前,你也可以执行make menuconfig先配置一下编译选项。
四、在模拟器中运行编译好的内核。
1、在启动模拟器之前,先设置模拟器的目录到环境变量$PATH中去:
USER-NAME@MACHINE-NAME:~/my_android$ export PATH=$PATH:~/my_android/out/host/linux-x86/bin

2、设置ANDROID_PRODUCT_OUT环境变量
USER-NAME@MACHINE-NAME:~/my_android$ export ANDROID_PRODUCT_OUT=~/my_android/out/target/product/generic

3、 在后台中指定内核文件启动模拟器:
USER-NAME@MACHINE-NAME:~/my_android$  emulator -kernel ./kernel/goldfish/arch/arm/boot/zImage &
4、用adb工具连接模拟器,查看内核版本信息,看看模拟器上跑的内核是不是我们刚才编译出来的内核:
      USER-NAME@MACHINE-NAME:~/my_android$ adb shell
      这时候如果是第一次运行 adb shell命令,会看到以下输出,不用管它,再运行一次adb shell命令就可以了。
      * daemon not running. start it now on port 5037 *
      * daemon started successfully *
      error: device offline
     切换到proc目录:
root@ generic:/ # cd proc
root@generic:/proc #  cat version
Linux version 3.4.0-g39765bd (fantasy@ubuntu) (gcc version 4.6.x-google 20120106 (prerelease) (GCC) ) #2 PREEMPT Fri Jun 14 23:09:45 CST 2013

    从机器名 fantasy@ubuntu和日期  Fri Jun 14 23:09:45 CST 2013可以看出,模拟器使用的内核即为刚刚编译出来的内核。

root@android:/proc # cat cu

参考:

1.http://blog.csdn.net/luoshengyang/article/details/6564592

2.http://source.android.com/source/building-kernels.html

3.http://blog.csdn.net/farce/article/details/5901531

转载于:https://www.cnblogs.com/dyllove98/archive/2013/06/15/3137647.html

在Ubuntu上下载、编译和安装Android 4.2 最新内核源代码(Linux Kernel)相关推荐

  1. 【转】在Ubuntu上下载、编译和安装Android最新源代码

    原文网址:http://blog.csdn.net/luoshengyang/article/details/6559955 看完了前面说的几本书之后,对Linux Kernel和Android有一定 ...

  2. 在Ubuntu上通过命令行安装Elisa KDE音乐播放器

    2019独角兽企业重金招聘Python工程师标准>>> 我们已经测试了不同的Linux音乐播放器,以创建最佳列表. 而Elisa也属于开源类别的优秀音乐播放器,以及良好的界面和Pla ...

  3. Window 和 Ubuntu ENET下载编译

    Window 和 Ubuntu ENET下载编译 大家都知道UDP这个东西太不可靠了,存在着乱序,丢包,包重复等缺点,但它的速度快,包有界等优点,但在实际编程中要自己处理乱序啊之类的问题会发疯 的.也 ...

  4. ubuntu上 grafana + influxdb + telegraf 安装配置

    apt安装 Grafana 一个纯粹的HTML/JS应用,其功能非常强大,访问InfluxDB时不会有跨域访问的限制.只要配置好数据源为InfluxDB之后就可以,剩下的工作就是配置图表. Influ ...

  5. Milestone/A853/XT702/umts_sholes Compile your own Android ROM and Customize your own linux kernel

    本文讲述 如何为自己的 Motolora Milestone/umts_sholes/A853/XT702 编译 Android CM ROM, 从此以后可以自己轻松定制 Android ROM,喜欢 ...

  6. ubuntu系统下载编译android源码

    在ubuntu系统下编译android需要注意的事项: 1. 参考http://source.android.com/中的安装说明. 2. 安装JDK6中碰到的问题可以参考http://hi.baid ...

  7. debian编译php mysql5.6_在Debian/Ubuntu上免编译安装PHP7.2~5.6

    本文介绍在 Debian/Ubuntu 系统上免编译安装 PHP7.2~5.6,教程适用系统为:Debian 9.Deiban 8.Ubuntu 18.04 LTS.Ubuntu 16.04 LTS. ...

  8. 在Ubuntu上用微软OFFICE安装官方Microsoft Office Web Apps deb

    在Ubuntu上要用微软OFFICE?去安装官方的Web应用吧 https://linux.cn/article-3826-1.html 译者: LCTT cereuz | 2014-09-15 14 ...

  9. Centos中Redis的下载编译与安装(超详细)

    场景 NoSQL,泛指非关系型的数据库,NoSQL即Not-Only SQL,它可以作为关系型数据库的良好补充.随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数 ...

最新文章

  1. SOA学习笔记(一)
  2. Linux下的Ubuntu16.04系统配置并使用USB转串口(串口转USB),最终使用python的serial和pyserial包实现串口的打开并读取数据
  3. java二级考点速记_同学,你要的考点速记口诀汇总篇来啦,速记!
  4. iview的表格自定义_Vue中使用iview-UI表格样式修改和使用自定义模板数据渲染相关...
  5. 【python】多进程、多线程、序列
  6. 关于使用weex开发app上线App Store问题
  7. Js日期格式化 年月日时分秒
  8. mysql为什么要重建索引_深入理解重建索引
  9. 基于分布式认知工业互联网的汽车零部件质量溯源平台
  10. Dreamweaver构建Blog全程实录
  11. 31: Nginx代理服务器 、 Nginx优化 、 总结和答疑
  12. 员工跟母亲吐槽被同事欺负,隔天母亲跑到公司打同事,结果蒙了
  13. LeCo-142. 环形链表 II
  14. 计算两个数之差的绝对值
  15. python遥控汽车玩具_[详细实例]MicroPython拼插编程实战:DIY一台会思考的壁障车...
  16. TypeError: Cannot set properties of undefined (setting ‘xx‘)
  17. PB级企业电商离线数仓项目实战
  18. 在C++中部署python深度学习-学习笔记
  19. Python个人项目1 --------电商项目
  20. 股票的最新和历史股息收益率查询(3)

热门文章

  1. 1.KafKa-介绍
  2. 苹果依旧强大 物联网领域举足轻重
  3. 数据库不完全恢复 以及恢复到测试环境:
  4. shiro使用jdbc_realm登录验证
  5. linux vmware 安装后无法桥接到物理网卡的解决办法
  6. 数据结构+算法 学习计划与资源
  7. 虚拟机四种网络连接模式比较
  8. 设备底座几个常见固定方式
  9. 一个女程序员的创业人生:胆识也是一种能力 作者:秋镇菜
  10. 为C++程序添加文件保存加载功能