(编译安卓内核并运行在模拟器上)How do you compile android kernel(goldfish) and let it run on emulator?

前言:这是14年,刚出来实习的时候,学的。文章放在QQ空间,但QQ空间现在已经莫落了,把文章转发在这里。

官方指导步骤:http://source.android.com/source/building-kernels.html,中国特色互联网下及内核的编译步骤及方法(2014/04/16):

Depending on which kernel you want。
//你可以下载,下面,任何一个内核,它们是彼此独立的。代表不同的内核的。

$ git clone https://android.googlesource.com/kernel/common.git
$ git clone https://android.googlesource.com/kernel/exynos.git
$ git clone https://android.googlesource.com/kernel/goldfish.git
$ git clone https://android.googlesource.com/kernel/msm.git
$ git clone https://android.googlesource.com/kernel/omap.git
$ git clone https://android.googlesource.com/kernel/samsung.git ;
$ git clone https://android.googlesource.com/kernel/tegra.git

以上是众多内核,你可以按需下载。各种内核是神马,自己百度和谷歌,这里以goldfish内核为例。

以下是下载内核的步骤,就是创建文件夹来存放内核和下载内核。
cdyourAndroidSourceDir()yourAndroidSourceDir c d y o u r A n d r o i d S o u r c e D i r ( 安 卓 源 代 码 目 录 ) y o u r A n d r o i d S o u r c e D i r sudo mkdir kernel
yourAndroidSourceDir cdkernelkernel c d k e r n e l k e r n e l git clone https://android.googlesource.com/kernel/goldfish.git
//天朝的网络,与世界不同,在这里,如果下载不了。请尝试把https改成http。
下载的同时,请下载交叉编译工具:
找个地方,创建一个文件夹,然后进去里面下载,比如,我把这个工具放在安卓源代码目录下,自己创建的名为gcc文件夹。
gcc$ git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6 //下载地址源于官网。
//天朝的网络,与世界不同,在这里,如果下载不了。请尝试把https改成http。
交叉编译工具下载好后,执行以下代码:(执行下面这三行指令,在哪个路径下,都可以)
exportARCH=arm(arm) e x p o r t A R C H = a r m ( a r m 后 面 不 能 有 空 格 , 下 面 的 都 一 样 ) export SUBARCH=arm
exportCROSSCOMPILE=armeabi e x p o r t C R O S S C O M P I L E = a r m − e a b i − export PATH= PATH:/prebuilts/gcc/linuxx86/arm/armeabi4.6/bin: P A T H : 交 叉 编 译 工 具 的 目 录 / p r e b u i l t s / g c c / l i n u x − x 86 / a r m / a r m − e a b i − 4.6 / b i n : PATH
到此为止,交叉编译工具成功配置好了!
同时,goldfish内核也应该下载好了,假设已下载好。请执行以下指令:
cdgoldfish c d g o l d f i s h git branch -a//这一句是显示goldfish的不同版本(直译叫分支)自己找到对应的下载吧。
然后,会显示,类似以下的内容:
remotes/origin/android-goldfish-2.6.29
remotes/origin/android-goldfish-3.4
…//其它不同版本。我选了最新的3.4,你自己按需下载。
下载指令如下:(说是下载,怎么感觉像是解压… …checkout不是检查的意思吗?这里速度也很快)
gitcheckoutremotes/origin/androidgoldfish2.6.29 g i t c h e c k o u t r e m o t e s / o r i g i n / a n d r o i d − g o l d f i s h − 2.6.29 make goldfish_armv7_defconfig
make m a k e 注 : 用 make goldfish_defconfig这样配置也可以编译通过,模拟器也可以启动,但是Android的开机画机就显示不了,$adb shell也死活连不上,原因就是这个goldfish_defconfig这个配置文件问题. //源于网络博客:http://blog.csdn.net/flydream0/article/details/7070392
如果make goldfish_armv7_defconfig,报了什么can’t find defaulconfiguartion(大概是这么拼)的错误,那就是你的交叉编译工具没配置好。。不过,只要照上面做,就没问题。。。反正,我在这里花了几个小时,重复下载和编译内核多次。。。。才找出原因。

这些步骤,做完之后,就可以,把内核烧到模拟器里去了。。
如果是armv7的内核,请烧到4.0以上的模拟器上去,听说2.3的对应v5,4.0及以上对应v7。

有一些细节要说清楚一下:如果交叉编译工具没配置好,就算可以编译,那也会编译成x86的处理器类型了。而且,大部分错误,源于配置交叉编译工具的错误。。。而这个配置因为太简单,所以,容易忽视而致错,是故,得谨慎配置!
  一时,突然想不起许多细节,以后想到,再说。

在ubuntu下make内核的时候提示:

HOSTCC scripts/basic/fixdep
/bin/sh: scripts/basic/fixdep: Permission denied
make[1]: * [scripts/basic/fixdep] 错误 126
make: * [scripts_basic] 错误 2

最终发现将内核移至其他linux下的分区就可以了,故make不可在fat32或NTFS等非linux原生文件系统格式分区下执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值