编译Android模拟器内核goldfish
来源:互联网 发布:接口 java 编辑:程序博客网 时间:2024/06/10 12:46
上一篇讲述了怎么下载android内核,这篇以编译google为android模拟器提供的内核goldfish为例,记录下我的编译过程。
一、下载交叉编译器
新建一个目录android_tools用于存放交叉编译器,然后cd到该目录下,执行如下指令:
git clone https://android.googlesource.com/platform/prebuilt
下载完成后在android_tools目录下会有一个prebuilt目录,该目录下内容如下:
然后为该交叉编译器设置环境变量:
export PATH=/home/jession/android_tools/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH
二、编译前的配置
首先打开内核源码主目录下的Makefile文件,找到如下两句:
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?=
修改如下:
ARCH ?= arm
CROSS_COMPILE ?= arm-eabi-
其中ARCH变量表示将Linux源代码编译成可在ARM架构上运行的Linux内核,CROSS_COMPILE变量表示交叉编译器的前缀。读者可打开交叉编译器下的linux-x86/toolchain/arm-eabi-4.4.3/bin目录,会发现其中的命令基本上都是以arm-eabi-开头的,如图:
配置好Makefile脚本后开始配置内核主目录下的.config文件(隐藏文件),一般新下载的Linux内核源码根目录下都没有.config文件,该文件决定了编译生成的Linux内核由哪些功能模块组成。可在内核根目录下面使用如下四个指令生成.config文件(这里没使用,所以具体情况也不清楚,用时自查):
make config :以文本形式配置Linux内核。
make menuconfig :以字符界面风格的菜单形式配置Linux内核(使用该命令须先按照libncurses5,为字符界面的Linux终端提供界面,安装方式:apt-get install libncurses5-dev)。
make oldconfig :类似于make config,只是要求用户参与的配置项更少,大多配置会给出默认值。
make xconfig :以图形界面形式配置Linux内核,须安装QT(apt-get install libqt4-dev)。
我们因为是编译android模拟器内核,有一种方式可以是我们无须配置就能得到.config文件,而且更符合android模拟器配置。方法如下,新建一个模拟器(因为这里我们编译android模拟器内核,需要测试结果,所以android-sdk必须下载。如果已创建模拟器,这步就不必了):
android create avd -n test -t 1 #在sdk的tools目录下进行
打开该模拟器:
emulator -avd test
模拟器开启后,使用如下命令导出模拟器文件系统下的/proc/config.gz文件,这里假设adb命令已添加进环境变量。
adb pull /proc/config.gz
执行上述命令后,config.gz文件会被pull到当前目录下,将其拷贝进内核源码主目录下,解压:
gunzip config.gz
得到config文件,然后将其改名为.config文件即可:
mv config .config
我在网上看到有人编译goldfish时使用如下指令得到了.config文件:
make goldfish_defconfig
我也试了一下,确实生成的.config文件,使用该.config配置文件编译内核后也成功生成了zImage二进制文件,但是使用该内核开启模拟器时却始终无法进入系统。
三、编译
如果以前编译过,可先使用make clean命令清除一些由编译生成的文件(.o、.ko等文件)。然后键入如下指令编译:
make
编译完成后会在内核源码目录的arch/arm/boot/下生成一个zImage文件,即为最终的内核二进制文件,使用上一步新建的模拟器进行测试:
emulator -avd test -kernel /home/jession/android_kernel/goldfish/arch/arm/boot/zImage
如果成功打开模拟器,表示编译成功,可使用adb shell进入模拟器文件系统查看当前内核版本:
cat /proc/version
得到结果如下图:
时间显示该内核为刚刚生成的。
- 编译Android模拟器内核goldfish
- android goldfish 内核编译
- 如何下载并编译Android模拟器Linux内核goldfish
- 编译Android goldfish内核源码
- 在MAC系统中编译ANDROID源码与模拟器内核GoldFish
- 【转】在MAC系统中编译ANDROID源码与模拟器内核GoldFish
- Mac下编译Android以及goldfish内核
- 下载编译goldfish内核
- 编译goldfish-3.10 内核
- 如何下载并编译Android内核源码goldfish(图文)
- 如何下载并编译Android 4.0内核源码Goldfish(图文)
- Ubuntu12.04: 下载,编译Android2.6.29内核goldfish,将新编译的内核和镜像安装至模拟器
- Android Goldfish内核编译 + eCryptfs文件加解密系统的内核模块配置
- 编译goldfish内核后,emulator黑屏解决方法
- 如何在32位ubuntu11.10 下编译android 4.0.1源码和goldfish内核
- 如何在32位ubuntu11.10 下编译android 4.0.1源码和goldfish内核
- 如何在32位ubuntu11.10 下编译android 4.0.1源码和goldfish内核
- Android内核开发 Goldfish Linux Kernel编译及安卓虚拟机测试
- Installing Android Studio IDE in Ubuntu | Fedora – Hello World Application
- Jetty使用入门
- 黑马训练营---------IO 字节数组流对象
- Java 多线程生产者和消费者代码示例
- 在做iframe的时候左侧栏目跳转方式
- 编译Android模拟器内核goldfish
- 当ArcGIS10.2遇到SQLite
- 怎样查看SAP Host Agent版本?
- js 中容易犯错的变量声明
- c# MD5加密
- UNIX udp应用增加可靠性(1)
- oracle 存储过程的一些应用-02
- PostgreSQL和PPAS的分区表及多种条件下的性能体现一
- 用Orachard与Bootstrap建站