免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1635 | 回复: 0
打印 上一主题 下一主题

自己编译Google Android内核的Linux源码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-17 17:28 |只看该作者 |倒序浏览

转载地址http://www.linuxidc.com/Linux/2007-12/10010.htm
这是之前自己在实验室试验时候的文章了,今天才发现还没有发出来,就整理了一下放出。Google推出了Android平台所基于的Linux的源
码,在之前的相关文章中我也提到了这一点,除了比较该内核和标准内核之间的差异外,我们还可以自己通过源码来编译出自己的内核镜像。虽然目前编译出的镜像
是和默认镜像一样的,但是这步成功,会对以后的系统移植有极大帮助。
下面就是比较详细的步骤。首先,我们知道,Android的默认硬件处理器是ARM的,因此我们需要在自己的host机器上构建交叉编译环境。来到
CodeSourcery,(http://www.codesourcery.com/gnu_toolchains/arm
/download.html)选择ARM EABI 以及IA32
GNU/Linux,直接下载即可。然后从这里(http://code.google.com/p/android/downloads/list)获
得内核源代码,准备工作就完成了。
然后就是配置交叉编译链并解压缩源代码。建议这里把交叉编译工具的路径添加到PATH中,以后也方便。
好,接下来就是常规的编译内核步骤了。首先需要配置文件。我们编译所需要的配置文件存在于Android运行系统中的proc目录下,具体是
/proc/config.gz,因此,需要将其导出来。打开模拟器emulator -console,然后在另一个终端下使用命令
adb pull /proc/config.gz ./
这样,config.gz就被转移到当前目录下了。解压缩,重命名为.config,放到kernel,也就是源代码解压缩后的目录下,这就是我们编译系统需要用的配置文件。
然后修改Makefile,指定成我们刚下载的交叉编译工具:
CROSS_COMPILE=/home/windstorm/Work/Android/arm-2007q3/bin/arm-none-eabi-
另外,2.6.23的内核增加的build-id在这里不能用,必须去掉
#LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,
$(call ld-option, -Wl$(comma)–build-id,))
如果不去掉,编译出来的内核有4.3M大,且模拟器无法加载。我还不是很清楚build-id在这里不能用的原因,知道的朋友请不吝赐教,谢谢。最
后就直接make了。生成出来的镜像自动保存为arch/arm/boot/zImage,用ll看,是和原始镜像sdk/tools/lib
/images/kernel-qemu的大小一样的。
最后,就是通过emulator加载自己编译的内核,看看能否成功运行了。
emulator -kernel YOUROWNPATH/zImage
如果可以,恭喜你,自己编译Android内核就此成功。
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/80919/showart_1725428.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP