由于制作的Busybox缺少ubiformat命令,然后自己移植mtd-utils,这里记录下:
环境:Ubuntu虚拟机19.04
mtd-utils依赖zlib、lzo、e2fsprogs提供的库和头文件:
zlib: 1.2.11
http://www.zlib.net/
lzo: 2.10
http://www.oberhumer.com/opensource/lzo/download/
e2fsprogs: 1.45.3
http://sourceforge.net/projects/e2fsprogs/files/e2fsprogs/
mtd-utils: 1.5.2
ftp://ftp.infradead.org/pub/mtd-utils/ //这个官网下的包有时校验出错
1.zlib编译:
$ tar -zxvf zlib.tar.gz
$ cd zlib/
$ sudo CC=arm-linux-gcc ./configure --prefix= mtd-utils解压路径/arm-linux-gnueabi
$ make
$ make install
2.lzo编译:
$ tar -zxvf lzo.tar.gz
$ cd lzo/
$ sudo CC=arm-linux-gcc ./configure --host=arm-linux --prefix= mtd-utils解压路径/arm-linux-gnueabi
$ make
$ make install
3. e2fsprogs编译:
$ tar -zxvf e2fsprogs.tar.gz
$ cd e2fsprogs/
$ sudo CC=arm-linux-gcc ./configure --host=arm-linux --prefix= mtd-utils解压路径/arm-linux-gnueabi
$ make
$ make install
4.mtd-utils编译:
修改Makefile
CROSS = arm-linux-gnueabi-
CC := $(CROSS)gcc -EL
LDFLAGS := -static
ZLIBCPPFLAGS = -I/mtd-utils解压路径/arm-linux-gnueabi/include
LZOCPPFLAGS = -I/mtd-utils解压路径/arm-linux-gnueabi/lzo/include/lzo
UUIDCPPFLAGS = -I/mtd-utils解压路径/arm-linux-gnueabi/include/uuid
ZLIBLDFLAGS = -L/mtd-utils解压路径/arm-linux-gnueabi/zlib/lib
LZOLDFLAGS = -L/mtd-utils解压路径/arm-linux-gnueabi/lzo/lib
UUIDLDFLAGS = -L/mtd-utils解压路径/arm-linux-gnueabi/lib
WITHOUT_XATTR = 1
$ make
若提示"major"错误:
mkfs.ubifs/devtable.c:240:10: error: called object ‘major’ is not a function or function pointer
则在相应文件中添加头文件:
#include <sys/sysmacros.h>
若提示缺少头文件,则从zlib、lzo、e2fsprogs的uuid目录中拷贝到mtd-utils/include目录。
mtd-utils 2.0. 0 和2.1.0编译
依赖包:zlib-1.2.11 lzo-2.10 e2fsprogs-1.45.6
环境:
Linux hangtu 4.15.0-101-generic #102~16.04.1-Ubuntu SMP Mon May 11 11:38:16 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
依赖包编译和上面一样
mtd-utils编译脚本如下:
export WITHOUT_XATTR=1
export PREFIX=mtd-utils安装路径/arm-linux-gnueabi/
export PKG_CONFIG_PATH=${PREFIX}/lib/pkgconfig/
export ZLIBCPPFLAGS=-I${PREFIX}/include
export LZOCPPFLAGS=-I${PREFIX}/lzo/include/lzo
export UUIDCPPFLAGS=-I${PREFIX}/include/uuid
export ZLIBLDFLAGS=-L${PREFIX}/zlib/lib
export LZOLDFLAGS=-L${PREFIX}/lzo/lib
export UUIDLDFLAGS=-L${PREFIX}/lib
export CFLAGS='-I${PREFIX}/include -I${PREFIX}/include/lzo -I${PREFIX}/include/uuid -g -O2'
export ZLIB_LIBS=-L${PREFIX}/lib
export LZO_LIBS=-L${PREFIX}/lib
export UUID_LIBS=-L${PREFIX}/lib/pkgconfig
export LDFLAGS="$ZLIB_LIBS $LZO_LIBS $UUID_LIBS -luuid -lz"
export CFLAGS="-O2 -g $ZLIB_CFLAGS $LZO_CFLAGS $UUID_CFLAGS"
sudo CC=arm-linux-gnueabi-gcc ./configure --host=arm-linux --prefix=/opt/home/llw/mtd-utils/install LDFLAGS=-L${PREFIX}/lib UUID_CFLAGS='-I${PREFIX}/include/uuid' LZO_CFLAGS='-I${PREFIX}/include/lzo' ZLIB_CFLAGS='-I${PREFIX}/include' --without-crypto
sudo make