交叉编译器: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
5、mtd-utils编译
make CROSS=arm-openwrt-linux-gnueabi- WITHOUT_XATTR=1(也可以写到Makefile中,如写到common.mk中CROSS=arm-openwrt-linux-gnueabi- )
编译生成的工具在arm-openwrt-linux-gnueabi目录下。
二、ubuntu下mtd-utils编译
参考网页 http://blog.chinaunix.net/uid-26895763-id-3465135.html
注意: 在编译的过程中,你或许会遇到下面的问题:(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