用embedded-lfs构建嵌入式Linux系统

积跬步以至千里 2010-02-01

转载时请注明出处和作者联系方式
文章出处:http://www.limodev.cn/blog
作者联系方式:李先静 <xianjimli at hotmail dot com>

embedded-lfs代表embedded linux from scratch,也就是从头构建一个嵌入式Linux系统,不过它与标准LFS没有太大关系,只是借用了LFS这个名称而已。要说构建嵌入式Linux系统,openembedded相关项目应该是最有名的,不过它做得太复杂,如果不出问题,用起来很方便,但是一旦出点问题,就不知怎么去搞了。玩了一次,总是出问题,让我很沮丧,后来在华清远见上课时,自己整了一个embedded-lfs。embedded-lfs非常简单,当然功能也要弱一些,对于只想玩玩的初学者还是有帮助的。

o 下载embedded-lfs
svn checkout http://embedded-lfs.googlecode.com/svn/trunk/ embedded-lfs-read-only

o 创建一个名为xxxx_env.sh的脚本文件。
这里的xxxx代表板子的名称,比如为pxa300写的pxa300_env.sh内容如下:

unset TOOLCHAIN_PREFIX
export BOARD_NAME=pxa300
export TOOLCHAIN=/usr/local/arm-linux-4.1.1
 
. env.sh arm $1
export CFLAGS=$CFLAGS" -mcpu=xscale -fno-strict-aliasing"

这里主要是设置板子的名称和工具链的位置,和一些额外的编译选项。有三个缺省的脚本文件:

openmoko_env.sh  为openmoko手机编译
  pxa300_env.sh     为marvell的pxa300编译。
  x86_env.sh          编译x86的版本,可以虚拟机里测试。

o 修改软件包配置文件

配置文件里的每一项描述一个软件包,同一个软件包可以有多个项,会自动合并起来。如zlib的描述:

[zlib]
config-env  = export CC=$(TARGET_CC) PREFIX=$(PREFIX)
config-cmd  = configure
config-param= --prefix=$(PREFIX) --shared
url         = http://www.zlib.net/zlib-1.2.3.tar.gz

config-env指定在configure之前要设置的环境变量。
config-cmd指定configure时执行的命令。
config-param指定configure时的参数。
url则是用来下载软件包的位置。

相关推荐