编译服务器版本
Ubuntu 12.04
mtd-utils依赖于zlib、lzo、e2fsprogs提供的库
zlib下载地址:zlib Home Site
lzo下载地址:Index of /opensource/lzo/download
e2fsprogs下载地址:Ext2/Ext3/Ext4 Filesystems Utilities - Browse /e2fsprogs at SourceForge.net 或 Index of /e2fsprogs
mtd-utils下载地址:Memory Technology Device (MTD) Subsystem for Linux.
解压编译
tar -zxf zlib-1.2.11.tar.gz
cd zlib-1.2.11/
CC=arm-hisiv600-linux-gcc ./configure -share --prefix=/home/admin/out
make
make install
tar -zxf lzo-2.09.tar.gz
cd lzo-2.09/
CC=arm-hisiv600-linux-gcc ./configure --host=arm-hisiv600-linux --enable-shared --prefix=/home/admin/out
make
make install
tar -zxf e2fsprogs-1.42.13.tar.gz
cd e2fsprogs-1.42.13/
./configure --host=arm-hisiv600-linux --enable-elf-shlibs --prefix=/home/admin/out
make
make install-libs
tar -jxf mtd-utils-1.5.0x.tar.bz2
cd mtd-utils-1.5.0/
修改 Makefile,打入该patch
--- Makefile.old 2019-10-08 11:03:09.563027087 +0800
+++ Makefile.new 2019-10-08 11:57:07.916998400 +0800
@@ -1,6 +1,13 @@
# -*- sh -*-
+WITHOUT_XATTR = 1
+ZLIBCPPFLAGS = -I /home/admin/out/include
+LZOCPPFLAGS = $(ZLIBCPPFLAGS)
+ZLIBLDFLAGS = -L /home/admin/out/lib -lz
+LZOLDFLAGS = -L /home/admin/out/lib -llzo2
+UUIDLDFLAGS = -L /home/admin/out/lib -luuid
+
VERSION = 1.5.0
CPPFLAGS += -I./include -I$(BUILDDIR)/include -I./ubi-utils/include $(ZLIBCPPFLAGS) $(LZOCPPFLAGS)
@@ -103,6 +110,7 @@
#
obj-mkfs.ubifs = crc16.o lpt.o compr.o devtable.o \
hashtable/hashtable.o hashtable/hashtable_itr.o
+LDFLAGS_mkfs.ubifs = $(ZLIBLDFLAGS) $(LZOLDFLAGS) $(UUIDLDFLAGS)
LDLIBS_mkfs.ubifs = -lz -llzo2 -lm -luuid
$(call mkdep,mkfs.ubifs/,mkfs.ubifs,,ubi-utils/libubi.a)
静态编译mtd-utils
make CROSS=arm-hisiv600-linux- CFLAGS=--static
在 mtd-utils-1.5.0/arm-hisiv600-linux 目录里面,有可执行的bin档,如 nanddump、nandwrite、flash_erase 等
在 mtd-utils-1.5.0/arm-hisiv600-linux/ubi-utils 目录里面,有 mtdinfo
如果编译服务器版本是Ubuntu 16.04或更高,应该使用 mtd-utils-2.0.0,依赖可以这样搭配:
zlib-1.2.11.tar.gz
lzo-2.10.tar.gz
e2fsprogs-1.44.0.tar.gz
mtd-utils-2.0.0.tar.bz2
mtd-utils-2.0.0 目录里不像1.5.0直接有Makefile,2.0.0 是有 configure,步骤有点不一样
export ZLIB_CFLAGS=-I/home/admin/out/include
export ZLIB_LIBS=-L/home/admin/out/lib
export LZO_CFLAGS=-I/home/admin/out/include
export LZO_LIBS=-L/home/admin/out/lib
export UUID_CFLAGS=-I/home/admin/out/include/uuid
export UUID_LIBS=-L/home/admin/out/lib/pkgconfig
export LDFLAGS="$ZLIB_LIBS $LZO_LIBS $UUID_LIBS -lz -llzo2 -luuid"
export CFLAGS="-O2 -g $ZLIB_CFLAGS $LZO_CFLAGS $UUID_CFLAGS"
./configure --host=arm-linux CC=arm-hisiv600-linux-gcc --prefix=$PWD/../out
make CROSS=arm-hisiv600-linux- WITHOUT_XATTR=1
make install