由於製作的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...