ubuntu10.04上ubifs文件系统的制作与移植过程

交叉编译器:arm-openwrt-linux-gnueabi-gcc 4.6.3

主机:ubuntu10.04

编译器:gcc4.1.3


 一、mtd-utils 交叉编译


参考网页http://www.cnitblog.com/luofuchong/archive/2009/03/11/55259.html


1、mtd-utils编译之前的准备

1)下载mtd-utils最新版本git clone git://git.infradead.org/mtd-utils.git

之所以使用最新版,是因为开始使用mtd-utils_20080508.orig.tar.gz,网上介绍的好多,结果出现了好多错误。

error: storage size of 'rq' isn't known

该网友给出了正确的解决方法http://www.wcode.net/plus/view.php?aid=851102

具体是在receive_image.c中添加结构体:

struct ip_mreq 
{
    struct in_addr imr_multiaddr;    /* IP multicast address of group */
    struct in_addr imr_interface;    /* local IP address of interface */
};

结果又出现其他错误。所以改用最新版,现在为mtd-utils1.5.0


2)zlib-1.2.3.tar.gz


3)lzo-2.03.tar.gz    http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz


4)e2fsprogs-1.41.14 http://download.chinaunix.net/download.php?id=38326&ResourceID=2490



解压到同一目录下(~/ubifs)。编译安装后的文件都放在~/ubifs/build下。


2、编译zlib

tar xzvf /mnt/hgfs/...../zlib-1.2.3.tar.gz-C ./
cd zlib-1.2.3

CC=arm-openwrt-linux-gnueabi-gcc ./configure--shared --prefix=$PWD/../build
make
make install


3、编译安装lzo

tar xzvf /mnt/hgfs/...../lzo-2.03.tar.gz -C ./
cd lzo-2.03

CC=arm-openwrt-linux-gnueabi-gcc ./configure--host=arm-openwrt-linux-gnueabi --prefix=$PWD/../build
make
make install


4、编译e2fsprogs-1.41.14

./configure--host=arm-openwrt-linux-gnueabi CC=arm-openwrt-linux-gnueabi-gcc--prefix=$PWD/../build

cd lib/uuid/(注意:不能省)

make

make install

 

5mtd-utils编译

make CROSS=arm-openwrt-linux-gnueabi- WITHOUT_XATTR=1(也可以写到Makefile中,如写到common.mkCROSS=arm-openwrt-linux-gnueabi- )

编译生成的工具在arm-openwrt-linux-gnueabi目录下。


二、ubuntu下mtd-utils编译


参考网页  http://blog.chinaunix.net/uid-26895763-id-3465135.html


1. zlib 
apt-get install zlib1g-dev

2. lzo
apt-get install liblzo2-2
apt-get install liblzo2-dev
apt-get install uuid-dev
由于我使用的是ubuntu10.04所以会提示我libuuid1的版本依赖过高,需要降低版本。
apt-get install libuuid1=2.17.2-0ubuntu1.10.04.1
然后再执行
apt-get install uuid-dev

3. e2fsprogs
我的Ubuntu10.04中可能系统自带的,不需要安装。

注意: 在编译的过程中,你或许会遇到下面的问题:(In compile process, you will meet the following problem.)

 1. sys/acl.h: No such file or directory  --> sudo apt-get install libacl1-dev

 2. compr_lzo.c:29:23: error: lzo/lzo1x.h: No such file or directory  --> sudo apt-get install liblzo-dev (Maybe use liblzo2-dev replace it)

 3. uuid/uuid.h: No such file or directory --> sudo apt-get install uuid-dev

安装完毕后,开始编译mtd-utils。
打开终端,输入:
make WITHOUT_XATTR=1
或者 make 

至此,mtd-utils 编译完成。
执行安装命令:

make install

这样您的工具 mkfs.ubifs就会安装到 /usr/sbin目录下面。


你可能感兴趣的:(ubuntu10.04上ubifs文件系统的制作与移植过程)