解压缩内核:

$ mkdir -p android

$ cd android

$ tar xzvf ../linux-2.6.23-android-m3-rc20.tar.gz

会解压出来一个叫做kernel的目录,google的android的linux内核就在里面了。

解压缩交叉编译工具链:

$ cd /usr/local/

$ sudo cp ~/arm-2007q3-51-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 .

$ sudo tar jxvf arm-2007q3-51-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

此时会解压出来一个叫做arm2007q3的一个目录,这里面就是工具链了。

设置一下环境变量:

$ export PATH=$PATH:/usr/local/arm2007q3/bin

好了,到此,基本的内核编译环境就搞好了。

4)现在是要得到android的内核编译参数的配置文件的时候了,该文件需要从已经安装好的android的模拟器

中得到才行。所以安装android的sdk也是必须的,这一步不太明白的朋友可以参考我以前发的android

命令行体验的文章。

首先启动android模拟器,然后通过adb得到模拟器中提供的内核配置文件:

$emulator &

$adb pull /proc/config.gz .

这时候adb工具会连接模拟器,并从它里面下载一个叫做config.gz的文件到你的当前目录下。

把它拷贝到你的kernel目录:

$cd ~/android/kernel

$cp ~/config.gz .

解压缩该文件,并重命名为.config,这一步做了就可以跳过make menuconfig之类的内核参数设置

动作了。

$gunzip config.gz

$mv config .config

5)修改kernel目录中的Makefile文件,用emacs或vi打开该Makefile

修改CROSS_COMPILE变量为:

CROSS_COMPILE=arm-none-linux-gnueabi-

这个就是刚刚的下载和解压的工具链的前缀了,旨在告诉make,在编译的时候要使用我们的工具链。

在Makefile中注释掉LDFLAGS_BUILD_ID这个变量:

例如将如下定义:

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,))

6)终于可以开始make了。

$ make

不出意外的话,应该整个过程都会非常顺利,最终会在~/android/kernel/arch/arm/boot目录下面

生成一个zImage,这个就是我们要的内核映像了。

7)激动人心的时刻终于到来了,我们可以测试一下刚刚编译出来的内核可以不可以用了。

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

当看到red eye在晃来晃去,最终显示出来android的界面的时候,一颗悬着的心总算放下了。android的proc里面的version如下:

# cat version

Linux version 2.6.23 (wayne@wayne) (gcc version 4.2.1 (CodeSourcery Sourcery G++ Lite 2007q3-51)) #1 Sat Jan 19 18:11:44 HKT 2008

从这里就可以看出,这是自己编译的kernel,而不是人家sdk里面自带的kernel-qemu了。

如何编译android的linux 内核,ubuntu下编译android内核(arm-none-linux-gnueabi-)相关推荐

  1. [C++]Linux之Ubuntu下编译C程序出现错误:“ stray ‘\302‘或者‘\240‘ in program”的解决方案

    [C++]Linux之Ubuntu下编译C程序出现错误:" stray '\302'或者'\240' in program"的解决方案 参考文章: (1)[C++]Linux之Ub ...

  2. java编写Linux文件共享,ubuntu下用samba实现windows与linux文件共享

    ubuntu下用samba实现windows与linux文件共享 首先要安装samba sudo apt-get install samba sudo apt-get install smbfs 1. ...

  3. android rom签名 作用,Ubuntu下折腾Android笔记(一)——ROM 签名 | 翅膀~

    2010.8.30 UPDATE:java环境的配置也可以直接使用openjdk,打开终端 sudo apt-get install openjdk-6-jre 就可以了. ------------- ...

  4. 安卓linux交叉编译,Linux Ubuntu下用Android NDK 生成独立交叉编译链

    本文主要介绍使用Android NDK生成独立交叉编译链,然后使用独立交叉编译链编译Android程序 下载NDK 下载与自己操作系统相吻合的版本 下载地址 解压到安装目录(如~/myndk): ta ...

  5. linux 编译 suitesparse,Ubuntu下编译SuiteSparse-4.4.1和METIS-4.0.3

    ubuntu下编译caffe Ubuntu下编译caffe 纯粹是个人编译的记录.不用CUDA(笔记本是amd卡,万恶的nvidia):不手动编译依赖包(apt-get是用来干啥的?用来直接装二进制包 ...

  6. Ubuntu下编译Android源代码

    上一次将了Ubuntu下下再Android源代码,地址:http://blog.csdn.net/zqiang_55/article/details/7173392 现在来说说Ubuntu下边缘And ...

  7. Linux(Ubuntu)下C语言编译与调试

    Linux(Ubuntu)下C语言编译与调试 编译流程 gcc安装命令 sudo apt install build-essential vim/touch 创建源文件 vim打开编辑源文件(.c结尾 ...

  8. 手机安装linux模拟器教程,Ubuntu下安装Android模拟器

    Ubuntu下安装Android模拟器首先确保已安装Java平台. 2.将下载的包解压. 3.先后运行命令: # cd android-sdk-linux/tools (进入目录,省略号处填你的路径) ...

  9. 从零开始,手把手教你如何在Ubuntu下编译VLC-Android源码

    前言 公司项目中使用的libvlcjni.so库文件,有点老,对Android 6.0+系统兼容性太差了,当程序运行在Android6.0+系统上时,回弹出警告框,提示libvlcjni.so:tex ...

最新文章

  1. 反射 字段_详解面试中常考的 Java 反射机制
  2. spring MVC、mybatis配置读写分离
  3. logback.xml配置
  4. apache 访问出现403 Forbidden
  5. 学习笔记101— word 如何给某一页后面所有页增加行号
  6. Spring Cloud构建微服务架构:服务消费(基础)
  7. .Net Core中使用RabbitMQ
  8. Hadoop从安装Linux到搭建集群环境
  9. python copy()和deepcopy()解释(import copy)
  10. 引入神经网络 API 1.1、支持全面屏,Android 9.0 来了!
  11. JavaScript编程规范-有利于效率和可读性
  12. Kudu:支持快速分析的新型Hadoop存储系统
  13. [2018.10.13 T2] 工作计划
  14. iOS开发月报#3|201809
  15. 用C语言将搜狗输入法词库转换成QQ拼音输入法词库
  16. 第39级台阶(递归+dp)
  17. PKU四日游(信息科学夏令营)
  18. Java 替换文件中的内容信息
  19. 【C】报错[Error] lvalue required as left operand of assignment
  20. 组图:1896年雅典奥运会

热门文章

  1. Caffe中卷基层和全连接层训练参数个数如何确定
  2. promise的前世来生
  3. 转行程序员日记---2020-10-19【开始加班了】
  4. 再度联手中国联通,开启第二个五年战略合作!
  5. EDK2之debug
  6. android 4.0 bluetooth bt HFP/HSP分析
  7. 开源大型网游服务器架构项目
  8. QML 信号与响应方法的总结
  9. 史上最简单的spark系列教程 | 完结
  10. 15. 星际争霸之php设计模式--策略模式