织梦CMS - 轻松建站从此开始!

罗索实验室

建立Host和Target的MTD工具

jackyhwei 发布于 2011-09-23 21:18 点击:次 
在看O'Reilly的《Building Embeded Linux System》的第7章存贮设备操作,看到来家里Target的MTD utilities,但是根据文档的介绍在编译的过程中出现问题,需要补充一些步骤,下面整理一下我的编译过程。
TAG:

在看O'Reilly的《Building Embeded Linux System》的第7章存贮设备操作,看到来家里Target的MTD utilities,但是根据文档的介绍在编译的过程中出现问题,需要补充一些步骤,下面整理一下我的编译过程。

我正在倒腾moblin,交叉编译环境使用i586-linux,这个只是为了学习嵌入式操作系统,如果真正在moblin上开发,应当使用moblin.org提供的MIC2工具。

我有一台netbook,安装了moblin2 beta,在上面没有发现mtd,我从ubuntu网站那里获取ubutun-8.10-mid-lpia,据说是就有moblin1的,MID在 moblin2中没有提供版本,而moblin1(支持mid)的开源代码已经无法在moblin社区中找到,所有我怀疑Intel已经不再考虑 menlow,不会在提供menlow的版本,而将目标锁定在mooreston上面。我在ubutun8.10的版本中发现有mtd。我去查我的 netbook的硬盘配置,还搞不清除是否是固体硬盘,说是以前的使用固体硬盘,后来为了降低成本,使用普通硬盘。

对于host上建立MTD,比较简单,根据文档按图索骥就可以了,具体如下:

$git-clone git://git.infradead.org/mtd-utils

$cd mtd-utils

$make //如果编译中出现文件,可能是因为没有安装lzo导致,需要安装libacl,lao,zlib。如果还有问题,可能需要安装devel包,例如lzo-devel。

$make DESTDIR=${PREFIX} install


下面是在host上建立MTD工具的步骤:


1、编译zlib,是一种压缩算法

在http://www.gzip.org/zlib中获取源代码,

$ ${PRJROOT}/build-tools/zlib-1.2.3

$CC=i586-linux-gcc LDSHARED="i586-linux-ld -shared" ./configure --share

$make

$make prefix=${TARGET_PREFIX} install

$cp -d ${TARGET_PREFIX}/lib/libz.so* ${PRJROOT}/rootfs/lib

我曾经在配置的时候,将LDSHARED写错来,结果只生成libzlib.a没有生成*.so文件。


2、编译lzo,也是一种压缩算法

在http://www.oberhumer.com/opensource/lzo中获取源代码

$cd ${PRJOOT}/build-tools/lzo-2.03

$CC=i586-llinux-gcc ./configure --enable-shared

$make

$make prefix=${TARGET_PREFIX} install

$cp - d{TARGET_PREFIX}/lib/liblzo2.so* ${PRJROOT}/rootfs/lib

在文档中给出的是liblzo.so*需要修正为liblzo2.so*


3、从acl中获取头文件acl.h

在http://dir.filewatcher.com/d/Gentoo/distfiles/Other/acl_2.2.47-1.tar.gz.154823.html中获取源代码

解压后,将include/acl.h拷贝到${TARGET_PREFIX}/include/sys


4、安装e2fsprogs

这个步骤书中没有,如果不安装e2fsprogs,将在mtd_utils的编译中出现错误,如下:

i586-linux-gcc -I../include -I../ubi-utils/include -D_FILE_OFFSET_BITS=64 -O2 -g -Wall -Wextra -Wwrite-strings -Wno-sign-compare -c -o /home/wei/workspace/mywork/moblin/sysapps/mtd-utils/i586-linux/mkfs.ubifs/lpt.o lpt.c -g -Wp,-MD,/home/wei/workspace/mywork/moblin/sysapps/mtd-utils/i586-linux/mkfs.ubifs/.lpt.c.dep
在包含自 lpt.c:23 的文件中:
mkfs.ubifs.h:48:23: 错误:uuid/uuid.h:没有那个文件或目录

这个不能只是copy头文件,还以来其中的库,所以需要整个进行编译。

$git-clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git

$./configure --host=i586-linux --enable-elf-shlibs --with-cc=i586-linux-gcc- -with-linker=i586-linux-ld --prefix=${TARGET_PREFIX}

$make

$make install


5、安装mtd_utils

下载源代码git-clone git://git.infradead.org/mtd-utils.git

为了避免在编译的过程中出现找不到lubi,修改 mkfs.ubifs/Makefile,将LDLIBS_mkfs.ubifs = -lz -llzo2 -lm -luuid -L../ubi-utils/ -lubi修订为LDLIBS_mkfs.ubifs = -lz -llzo2 -lm -luuid -L../$(HOST)/ubi-utils/ -lubi

$make CROSS=i586-linux- HOST=i586-linux

$make CROSS=i586-linux- HOST=i586-linux DESTDIR=${PRJROOT}/rootfs install

这样将装载在目标目录系统中的/usr/sbin中。

(flowingflying)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www1.rosoo.net/a/201109/15037.html]
本文出处:blog.csdn.net/flowingflying 作者:flowingflying
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容