预览加载中,请您耐心等待几秒...
1/7
2/7
3/7
4/7
5/7
6/7
7/7

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Android内核编译 1、从CodeSourcery上载用于交叉编译工具链: http://www.codesourcery.com/gnu_toolchains/arm/download.html我在这里选择的是->ARMGNU/Linux,以及IA32-GNU/Linux。有文章说应该选择ARMEABI,我不知道了,没有测试过,反正我选择的这个编译的内核也是可以跑起来的2、下载google的androidlinux内核源代码: http://code.google.com/p/android/downloads/list主要是这个文件:linux-2.6.23-android-m3-rc20.tar.gz 3、解压内核于交叉编译工具,并把工具链的路径放入PATH解压内核:$mkdir-pandroid$cdandroid$tarxzvf../linux-2.6.23-android-m3-rc20.tar.gz会解压出来一个叫做kernel的目录,google的android的linux内核就在里面。解压缩交叉编译工具链:$cd/usr/local/$sudocp~/arm-2007q3-51-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2.$sudotarzxvfarm-2007q3-51-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2此时会解压出来一个叫做arm2007q3的一个目录,这里面就是工具链。设置环境变量:$exportPATH=$PATH:/usr/local/arm2007q3/bin好了,到此,基本的内核编译环境就搞好了。 4)现在是要得到android的内核编译参数的配置文件的时候了,该文件需要从已经安装好的android的模拟器中得到才行。所以安装android的sdk也是必须的,这一步不太明白的朋友可以参考我以前发的android命令行体验的文章。首先启动android模拟器,然后通过adb得到模拟器中提供的内核配置文件:$emulator&$adbpull/proc/config.gz.这时候adb工具会连接模拟器,并从它里面下载一个叫做config.gz的文件到你的当前目录下。把它拷贝到你的kernel目录:$cd~/android/kernel$cp~/config.gz.解压缩该文件,并重命名为.config,这一步做了就可以跳过makemenuconfig之类的内核参数设置动作了。$gunzipconfig.gz$mvconfig.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)%,%,\$(callld-option,-Wl$(comma)--build-id,))修改为:LDFLAGS_BUILD_ID=#LDFLAGS_BUILD_ID=$(patsubst-Wl$(comma)%,%,\#$(callld-option,-Wl$(comma)--build-id,))把它注释掉的原因是目前android的内核还不支持这个选项。--build-id选项,主要是用于在生成的elf可执行文件中加入一个内置的id,这样在coredump,或者debuginfo的时候就可以很快定位这个模块是哪次build的时候弄出来的。这样就可以避免,每次都把整个文件做一遍效验,然后才能得到该文件的是由哪次build产生的。对于内核开发者来说,这是很不错的想法,可以节约定位模块版本和其影响的时间。目前,该功能还出于earlystage的状态,未来的android或许会支持,但至少目前的版本是不支持的。所以,用#注释掉即可,或者害怕不保险的话,就加入LDFLAGS_BUILD_ID=空,这样即使编译的时候用了,也只是一个空格而已。对这个--build-id选项感兴趣的朋友,可以访问下面的网址,它的作者已经解释得非常明白了:http://fedoraproject.org/wiki/Releases/FeatureBuildId6、开始make$make不出意外的话,应该整个过程都会非常顺利,最终会在~/android/kernel/arch/arm/boot目录下面生成一个zImage,这个就是我