Android(安卓)内核编译.doc_第1页
Android(安卓)内核编译.doc_第2页
Android(安卓)内核编译.doc_第3页
Android(安卓)内核编译.doc_第4页
Android(安卓)内核编译.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Android内核编译1、从CodeSourcery上载用于交叉编译工具链:/gnu_toolchains/arm/download.html 我在这里选择的是-ARM GNU/Linux,以及IA32-GNU/Linux。有文章说应该选择ARM EABI,我不知道了,没有测试过,反正我选择的这个编译的内核也是可以跑起来的2、下载google的android linux内核源代码:/p/android/downloads/list主要是这个文件:linux-2.6.23-android-m3-rc20.tar.gz3、解压内核于交叉编译工具,并把工具链的路径放入PATH解压内核:$ 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 zxvf 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 .config5、修改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,)把它注释掉的原因是目前android的内核还不支持这个选项。-build-id选项,主要是用于在生成的elf可执行文件中加入一个内置的id,这样在core dump,或者debuginfo的时候就可以很快定位这个模块是哪次build的时候弄出来的。这样就可以避免,每次都把整个文件做一遍效验,然后才能得到该文件的是由哪次build产生的。对于内核开发者来说,这是很不错的想法,可以节约定位模块版本和其影响的时间。目前,该功能还出于early stage的状态,未来的android或许会支持,但至少目前的版本是不支持的。所以,用#注释掉即可,或者害怕不保险的话,就加入LDFLAGS_BUILD_ID=空,这样即使编译的时候用了,也只是一个空格而已。对这个-build-id选项感兴趣的朋友,可以访问下面的网址,它的作者已经解释得非常明白了:/wiki/Releases/FeatureBuildId6、开始make$ make不出意外的话,应该整个过程都会非常顺利,最终会在/android/kernel/arch/arm/boot目录下面生成一个zImage,这个就是我们要的内核映像了。7、测试编译出来的内核是否可用$emulator -kernel /android/kernel/arch/arm/boot/zImage当看到red eye在晃来晃去,最终显示出来android的界面的时候,一颗悬着的心总算放下了。android的proc里面的version如下:# cat versionLinux version 2.6.23 (waynewayne) (gcc version 4.2.1 (CodeSourcerySourcery G+ Lite 2007q3-51) #1 Sat Jan 19 18:11:44 HKT 2008从这里就可以看出,这是自己编译的kernel,而不是人家sdk里面自带的kernel-qemu了。android自带的sdk里面的kernel映像的version应该是:# cat versionLinux version 2.6.23-gcc3bc3b4 () (gcc version 4.2.1) #3 Tue Oct 30 16:28:18 PDT 2007hoho, 这里不会把这个开发者的email暴露出来了吧。android的cpuinfo如下:Processor : ARM926EJ-S rev 5 (v5l)BogoMIPS : 313.75Features : swp half thumb fastmult vfp edsp javaCPU implementer : 0x41CPU architecture: 5TEJCPU variant : 0x0CPU part : 0x926CPU revision : 5Cache type : write-throughCache clean : not requiredCache lockdown : not supportedCache format : HarvardI size : 4096I a

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论