ARM版Linux内核编译与裁剪

1 篇文章 0 订阅
1 篇文章 0 订阅

Win7下使用Oracle VM VirtualBox搭建的Ubuntu11.10虚拟机

1、建立交叉编译环境:

      下载交叉编译器arm-linux-gcc-3.4.1.tar.bz2

http://download.csdn.net/detail/bill_xiang/5112653),并解压:

            tar jxvf arm-linux-gcc-3.4.1.tar.bz2

这样就会在当前目录产生一个./usr/local/arm/3.4.1目录,我进入local目录,将arm目录复制到/usr/local目录:

       cd ./usr/local

cp –rf ./arm /usr/local

这里复制路径没有固定要求,主要在下面设置环境变量时相对应就行:

使用sudo vim /etc/profile在/etc/profile文件的最后加上

export PATH=$PATH:/usr/local/arm/3.4.1/bin/(如果已经存在PATH则只需将/usr/local/arm/3.4.1/bin/添加在后面即可,用”:”与其他变量分割)

然后使用source /etc/profile命令使我们对/etc/profile文件的修改立即生效,而不用重新登录,这样在编译内核时系统就可以找到我们所指定的编译器了

 

2、下载Linux内核源码

www.kernel.org上下载linux-2.6.30.4.tar.bz2源码包,在当前用户目录(我的是:/home/billxiang/)下新建文件夹linux,复制linux-2.6.30.4.tar.bz2到linux文件夹中并解压:

              mkdirlinux

cp ./linux-2.6.30.4.tar.bz2 ./linux

cd ./linux

tar jxvf linux-2.6.30.4.tar.bz2

              这样会在我们新建的linux文件夹中产生一个linux-2.6.30.4文件夹

检查linux-2.6.30.4文件夹中Makefile,找到ARCH和CROSS_COMPILE的定义,改为:

     ARCH ?= arm

     CROSS_COMPILE ?= arm-linux-

       这是指定我们所编译内核所支持的cpu是ARM架构的,所使用的交叉编译器前缀是arm-linux-(这可以在我们所设置的环境变量所指定的目录下看到)

3、编译内核

       下面就可以开始编译linux内核了,在linux-2.6.30.4文件夹下直接执行make:

make

却出现

cc1: error: invalid option ‘abi=aapcs-linux’

错误

具体原因及解决方法见http://blog.csdn.net/bill_xiang/article/details/8640789

这里通过make menuconfig命令,在配置菜单中将Kernel Features中的EABI项去掉即可:

make menuconfig

通过上下键选中Kernel Features,再回车进入

通过上下键选中EABI项后,按’n’键取消该项(使方括号中的’*’号消失),然后通过左右键选择Exit退出,并保存设置,再次make(需要等待一段时间):

make


编译成功后可以在./arch/arm/boot目录下看到生成的zImage文件,这里没有进行裁剪,大小为1.9MB

 

4、裁剪内核

内核裁剪我还是使用图形界面进行选择操作,还是使用上面用到的makemenuconfig命令:

              make menuconfig

      

       在图形菜单界面中通过上下键选中Networking suport后按’n’键取消对网络的支持,退出、保存设置后再次make:

              make

       等待一段时间编译完成后,再次查看生成的zImage文件发现只有1.5MB了,说明裁剪成功。

 


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值