文章摘要: 本文主要描述了MTD(Memory Technology Device)工具的交叉编译制作。
开发环境: RHEL5
源码版本: mtd-utils-1.5.0 | zlib-1.2.6 | lzo-2.06 | e2fsprogs-1.42


1.交叉编译 zlib

$./configure --prefix=/home/user/mtd/install  

修改Makfile
由于zlib不支持指定--host选项,必须手工修改。

CC=arm-linux-gcc
LDSHARED=arm-linux-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
CPP=arm-linux-g++

AR=arm-linux-ar
RANLIB=arm-linux-ranlib

编译安装

$make
$make install

2.交叉编译 LZO

$./configure --host=arm-linux --prefix=/home/user/mtd/install
$make
$make install

3.交叉编译 e2fsprogs

$./configure --host=arm-linux CC=arm-linux-gcc --prefix= /home/user/mtd/install  
$cd lib/uuid/
$make
$make install

注意事项:
我们需要的其实是uuid而不是整个e2fsprogs,整个还是蛮大的要编译蛮久,而且编译不一定能通过.


4.编译MTD
修改Makefile 添加以下代码:

CROSS=arm-linux-
PREFIX = /home/user/mtd/install
ZLIBCPPFLAGS = -I$(PREFIX)/include
LZOCPPFLAGS = -I$(PREFIX)/include
ZLIBLDFLAGS = -L$(PREFIX)/lib
LZOLDFLAGS = -L$(PREFIX)/lib

LDFLAGS += $(ZLIBLDFLAGS) $(LZOLDFLAGS)
CFLAGS ?= -O2 -g $(ZLIBCPPFLAGS) $(LZOCPPFLAGS)

编译安装

$make WITHOUT_XATTR=1
$make install

至此所需工具已经安装至/home/user/mtd/install/sbin目录下,可根据需要拷贝至开发板使用了。