在目标板上使用ubifs,需要一些UBI工具,可从mtd-utils工具中得到。
在以前的文章中介绍过mtd-utils-1.2.0的交叉编译方式,但是这个版本的软件只能获得目标板的UBI工具,没有包含主机端得UBI工具。
mtd-1.3.0以上则包含了目标端和主机的UBI工具。主机上编译已经介绍过了,现在介绍交叉编译mtd-utils-1.4.2。
同样是在Fedora Core 9环境下编译。
当然,与交叉编译mtd-1.2.0一样,zlib、lzo都是不可缺少的,进行交叉编译,并安装到交叉工具链中,不再介绍。
交叉编译mtd-1.4.2还需要uuid,uuid包含在e2fsprogs软件包中,所以下载进行交叉编译。
----------------------------------------------------------------------------------
下载e2fsprogs:
wget
交叉编译脚本:
./configure --host=arm-vfp-linux --enable-elf-shlibs \
--prefix=/opt/nxp/gcc-4.3.2-glibc-2.7/arm-vfp-linux-gnu/
make
make install
mkdir /opt/nxp/gcc-4.3.2-glibc-2.7/arm-vfp-linux-gnu/include/uuid
cp lib/uuid/uuid.h /opt/nxp/gcc-4.3.2-glibc-2.7/arm-vfp-linux-gnu/include/uuid/
安装libuuid以及uuid.h文件。
------------------------------------------------------------------------------------
下载mtd-utils-1.4.2
wget ftp://ftp.infradead.org/pub/mtd-utils/mtd-utils-1.4.2.tar.bz2
交叉编译:
make CROSS=arm-vfp-linux-gnu- WITHOUT_XATTR=1
编译中会出现一些错误,可以不用理会。在arm-vfp-linux-gnu目录下生成了flash_erase等工具。
说明,没有了flash_eraseall工具,已经被flash_erase替代了。
将arm-vfp-linux-gnu/lib目录下的libmtd.a复制到交叉工具链目录:
sudo cp libmtd.a /opt/nxp/gcc-4.3.2-glibc-2.7/arm-vfp-linux-gnu/lib
进入ubi-utils目录,输入
make CROSS=arm-vfp-linux-gnu-
在rm-vfp-linux-gnu目录下会生成ubimkvol/ubiattachden等在目标板上用的工具。
----------------------------------------------------------------------------------------
下面给出一个更简单的办法,无需交叉编译e2fsprogs:
由于仅限于在目标板上使用,目标板上一般无需mkfs.ubifs这样的工具,所以可以不用编译这个目录,直接在Makefile中修改,去掉mkfs.ubifs目录:
#SUBDIRS = lib ubi-utils mkfs.ubifs
SUBDIRS = lib ubi-utils
去掉与jffs2相关的项。
make CROSS=arm-vfp-linux-gnu- WITHOUT_XATTR=1
make CROSS=arm-vfp-linux-gnu- -C ubi-utils
然后输入:
make CROSS=arm-vfp-linux-gnu- WITHOUT_XATTR=1
就可以了。在编译中会出现jffs2相关的错误,如果不希望看到这些错误的话,可以在Makefile中将与jffs2相关的项去掉即可。
编译完毕,在arm-vfp-linux-gnu目录下生成flash_erase等工具,在arm-vfp-linux-gnu/lib目录下生成libmtd库,将libmtd.a复制到交叉工具链目录。
然后进入ubi-utils目录,输入make CROSS=arm-vfp-linux-gnu-就可以了。
阅读(2801) | 评论(0) | 转发(1) |