阅读内容

嵌入式Linux内核的交叉编译编译-基于2.6.26

[日期:2008-09-08] 来源:Linux社区  作者:yuhunter


测试环境:Fedora 9 Linux 2.6.26 / gcc 4.3.0 / arm-Linux-gcc 3.4.1

本 文主要介绍如何构建在x86平台上交叉编译各平台上的嵌入式Linux内核。要完成一下步骤,首先必须确认有相应的交叉编译工具链。工具链可以自己编译获 得,但是对于初学者我们不推荐这么作,网上大有许多编译好的优秀的工具链。本文将以编译ARM平台上的内核为例子,其他平台基本步骤差异不大。为了显示最 新性,也采用可2.6.26版本的内核。

首先必须获得最新版本的内核,可以在ftp.kernel.org上下载我们需要的2.6.26的内核。获得相应内核包后,解压:

对于 Linux-2.6.26.tar.gz为
tar zxvf Linux-2.6.26.tar.gz

对于 Linux-2.6.26.tar.bz2为
tar xjvf Linux-2.6.26.tar.bz2

之后进入Linux-2.6.26文件夹内。
如果机器上已有2.6.26内核代码,也可以直接使用,但要清除上次编译的遗留物,可以
make distclean

准 备结束后,我们开始配置内核。在本机编译内核时,我们可以直接make menuconfig之类,就合根据我们机器当前内核的配置生产.config文件。但对于嵌入式当然就很困难。幸亏Linux支持上百种平台。对于不同 平台都有默认的配置文件,对于我们使用的arm,可以在/arch/arm/configs文件夹下看到
我们要根据自己所使用的平台来选择。如使用PXA270的,可以选择em_x270_defconfig。之后只要运行
make ARCH=arm CROSS_COMPILE=arm-Linux- em_x270_defconfig

对于我们使用的两个宏ARCH和CROSS_COMPILE,分别是指我们选择的体系结构(Linux在内核代码树arch文件夹中列出支持的体系结构)和交叉编译器的前缀。

之后就可以再运行
make menucnfig
进行修改。

之后就是编译了,对于嵌入式大多是编译成镜像文件,这里编译成zImage
make ARCH=arm CROSS_COMPILE=arm-Linux- zImage

如果有选择模块,还要
make ARCH=arm CROSS_COMPILE=arm-Linux- modules


make ARCH=arm CROSS_COMPILE=arm-Linux- INSTALL_MOD_PATH= modules_install

宏INSTALL_MOD_PATH是选择模块安装的根目录,这里我们选择的是我们为嵌入式准备的寄生文件系统路径,默认是本机的根目录(即/),如果设置这个宏会把模块安装大/lib/modules文件夹中,有时候这是灾难性的。

这 样就搞定了,是不是缺了什么?我们差点忘记了编译好的zImage。他在什么地方?对于一般而言是在 Linux-2.6.26/arch/$ARCH/boot里,本次是在 Linux-2.6.26/arch/arm/boot 找到他了,一看居然有1.5兆这么大。怎么变小能?关键就是在make menucnfig阶段了,这阶段才是技术要求所在。




相关资讯       Linux内核  Fedora 9 
本文评论       全部评论
发表评论
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款


点评: 字数
姓名:

L
I
N
U
X


GOOGLE搜索
Google