天天看點

mtd-utils交叉編譯

由于制作的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
           

繼續閱讀