用embedded-lfs构建嵌入式Linux系统
转载时请注明出处和作者联系方式
文章出处: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则是用来下载软件包的位置。