mtd utils交叉編譯

2021-10-03 18:18:10 字數 3011 閱讀 9644

由於製作的busybox缺少ubiformat命令,然後自己移植mtd-utils,這裡記錄下:

環境:ubuntu虛擬機器19.04

mtd-utils依賴zlib、lzo、e2fsprogs提供的庫和標頭檔案:

zlib: 1.2.11

lzo: 2.10

e2fsprogs: 1.45.3

mtd-utils: 1.5.2

//這個官網下的包有時校驗出錯
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
若提示缺少標頭檔案,則從zlib、lzo、e2fsprogs的uuid目錄中拷貝到mtd-utils/include目錄。

依賴包: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=$/lib/pkgconfig/

export zlibcppflags=-i$/include

export lzocppflags=-i$/lzo/include/lzo

export uuidcppflags=-i$/include/uuid

export zlibldflags=-l$/zlib/lib

export lzoldflags=-l$/lzo/lib

export uuidldflags=-l$/lib

export cflags='-i$/include -i$/include/lzo -i$/include/uuid -g -o2'

export zlib_libs=-l$/lib

export lzo_libs=-l$/lib

export uuid_libs=-l$/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$/lib uuid_cflags='-i$/include/uuid' lzo_cflags='-i$/include/lzo' zlib_cflags='-i$/include' --without-crypto

sudo make

mtd utils交叉編譯

最後終於解決,原因是路徑的問題 1 原始碼 說明 zlib和lzo是編譯mtd utils所需庫檔案,需提前交叉編譯完成,以供mtd utils編譯時呼叫 2 編譯安裝zlib root home cd zlib 1.2.5 root home zlib 1.2.5 cc arm none linu...

mtd utils交叉編譯

1.準備工具 mtd utils 1.4.5.tar.bz2 或zlib 1.2.5.tar.bz2 或 lzo 2.04.tar.gz 原文 e2fsprogs 1.41.14.tar.gz 2.編譯安裝 解壓mtd utils 1.4.5.tar.bz2 tar jxvf mtd utils 1...

交叉編譯mtd utils方法

1 安裝需要的庫 mtd utils 依賴的庫 1 zlib 庫 編譯方法 cc mips linux cc configure shared prefix xx prefix xx 指定生成好的庫檔案存放的資料夾,make install 到對應得資料夾 安裝方法 make install 2 l...