如何编译android的linux 内核,ubuntu下编译android内核(arm-none-linux-gnueabi-)
解压缩内核:
$ 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-)相关推荐
- [C++]Linux之Ubuntu下编译C程序出现错误:“ stray ‘\302‘或者‘\240‘ in program”的解决方案
[C++]Linux之Ubuntu下编译C程序出现错误:" stray '\302'或者'\240' in program"的解决方案 参考文章: (1)[C++]Linux之Ub ...
- java编写Linux文件共享,ubuntu下用samba实现windows与linux文件共享
ubuntu下用samba实现windows与linux文件共享 首先要安装samba sudo apt-get install samba sudo apt-get install smbfs 1. ...
- android rom签名 作用,Ubuntu下折腾Android笔记(一)——ROM 签名 | 翅膀~
2010.8.30 UPDATE:java环境的配置也可以直接使用openjdk,打开终端 sudo apt-get install openjdk-6-jre 就可以了. ------------- ...
- 安卓linux交叉编译,Linux Ubuntu下用Android NDK 生成独立交叉编译链
本文主要介绍使用Android NDK生成独立交叉编译链,然后使用独立交叉编译链编译Android程序 下载NDK 下载与自己操作系统相吻合的版本 下载地址 解压到安装目录(如~/myndk): ta ...
- linux 编译 suitesparse,Ubuntu下编译SuiteSparse-4.4.1和METIS-4.0.3
ubuntu下编译caffe Ubuntu下编译caffe 纯粹是个人编译的记录.不用CUDA(笔记本是amd卡,万恶的nvidia):不手动编译依赖包(apt-get是用来干啥的?用来直接装二进制包 ...
- Ubuntu下编译Android源代码
上一次将了Ubuntu下下再Android源代码,地址:http://blog.csdn.net/zqiang_55/article/details/7173392 现在来说说Ubuntu下边缘And ...
- Linux(Ubuntu)下C语言编译与调试
Linux(Ubuntu)下C语言编译与调试 编译流程 gcc安装命令 sudo apt install build-essential vim/touch 创建源文件 vim打开编辑源文件(.c结尾 ...
- 手机安装linux模拟器教程,Ubuntu下安装Android模拟器
Ubuntu下安装Android模拟器首先确保已安装Java平台. 2.将下载的包解压. 3.先后运行命令: # cd android-sdk-linux/tools (进入目录,省略号处填你的路径) ...
- 从零开始,手把手教你如何在Ubuntu下编译VLC-Android源码
前言 公司项目中使用的libvlcjni.so库文件,有点老,对Android 6.0+系统兼容性太差了,当程序运行在Android6.0+系统上时,回弹出警告框,提示libvlcjni.so:tex ...
最新文章
- 反射 字段_详解面试中常考的 Java 反射机制
- spring MVC、mybatis配置读写分离
- logback.xml配置
- apache 访问出现403 Forbidden
- 学习笔记101— word 如何给某一页后面所有页增加行号
- Spring Cloud构建微服务架构:服务消费(基础)
- .Net Core中使用RabbitMQ
- Hadoop从安装Linux到搭建集群环境
- python copy()和deepcopy()解释(import copy)
- 引入神经网络 API 1.1、支持全面屏,Android 9.0 来了!
- JavaScript编程规范-有利于效率和可读性
- Kudu:支持快速分析的新型Hadoop存储系统
- [2018.10.13 T2] 工作计划
- iOS开发月报#3|201809
- 用C语言将搜狗输入法词库转换成QQ拼音输入法词库
- 第39级台阶(递归+dp)
- PKU四日游(信息科学夏令营)
- Java 替换文件中的内容信息
- 【C】报错[Error] lvalue required as left operand of assignment
- 组图:1896年雅典奥运会