mtd utils交叉編譯

2021-08-10 06:33:23 字數 2934 閱讀 6522

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.4.5.tar.bz2

#cd mtd-utils-1.4.5

# make cross=arm-none-linux-gnueabi- without_xattr=1

其中cross=arm-none-linux-gnueabi-指定編譯器字首。

without_xattr=1是因為mtd-utils中有些原始碼使用了zlib.h中的庫檔案而不使用acl.h的庫檔案。

如在mkfs.jffs2.c檔案中:

#ifndef without_xattr

#include

#include

#endif

#include

#define crc32 __zlib_crc32

#include

#undef crc32

通常此時編譯不通過,出現如下錯誤:compr_zlib.c:39:18: error: zlib.h: no such file or directory。同時,在mtd-utils-1.4.5目錄下會生成乙個與編譯器字首同名的目錄arm-none-linux-gnueabi,該目錄為makefile中的$(builddir)。

接下來編譯zlib庫:

解壓zlib-1.2.5.tar.bz2

#tar jxvf zlib-1.2.5.tar.bz2

#cd zlib-1.2.5

#cc=arm-none-linux-gnueabi-gcc ./configure --shared --prefix=/mtd-utils-1.4.5/arm-none-linux-gnueabi

#make

#make install

編譯完成以後,通過make install將標頭檔案以及編譯生成的庫檔案安裝(copy)到/home/wloveg/mtd-utils-1.4.5/arm-none-linux-gnueabi目錄,即$(builddir)中。此時要修改mtd-utils-1.4.5目錄下的makefile檔案,在第一行新增如下內容:

export zlibcppflags=-i/home/wloveg/mtd-utils-1.4.5/arm-none-linux-gnueabi/include

目的是指定剛剛安裝的zlib庫的標頭檔案所在目錄。此處使用export宣告乙個變數是為了在接下來呼叫其它makefile時該變數依然有效。否則,在執行mtd-utils-1.4.5/mkfs.ubifs/makefile時會報錯。

繼續編譯mtd-utils-1.4.5:

#make cross=arm-none-linux-gnueabi- without_xattr=1

會出現如下錯誤:compr_lzo.c:31:23: error: lzo/lzo1x.h: no such file or directory。說明缺少lzo庫。

接下來編譯lzo庫:

解壓lzo-2.04.tar.gz

#tar zxvf lzo-2.04.tar.gz

#cd lzo-2.04

#cc=arm-none-linux-gnueabi-gcc ./configure --host=arm-linux --prefix=/mtd-utils-1.4.5/arm-none-linux-gnueabi

#make

#make install

編譯完成以後,通過make install將標頭檔案以及編譯生成的庫檔案安裝(copy)到/home/wloveg/mtd-utils-1.4.5/arm-none-linux-gnueabi目錄,即$(builddir)中。

繼續編譯mtd-utils-1.4.5:

# make cross=arm-none-linux-gnueabi- without_xattr=1

會出現如下錯誤:mkfs.ubifs.h:48:23: error: uuid/uuid.h: no such file or directory。說明缺少標頭檔案uuid/uuid.h,原因是缺少e2fsprogs。注:如果僅需要nand flash相關工具的話,這個錯誤可以不用理會,nand flash相關工具已經在/home/wloveg/mtd-utils-1.4.5/arm-none-linux-gnueabi目錄下生成。

編譯e2fsprogs-1.41.14:

解壓e2fsprogs-1.41.14.tar.gz

#tar zxvf e2fsprogs-1.41.14.tar.gz

#cd e2fsprogs-1.41.14

#./configure --host=arm-linux cc=arm-none-linux-gnueabi-gcc --prefix=/mtd-utils-1.4.5/arm-none-linux-gnueabi

#make

#make install-libs

編譯完成以後,通過make install-libs將標頭檔案以及編譯生成的庫檔案安裝(copy)到/home/wloveg/mtd-utils-1.4.5/arm-none-linux-gnueabi目錄,即$(builddir)中。

繼續編譯mtd-utils-1.4.5:

# make cross=arm-none-linux-gnueabi- without_xattr=1

編譯成功!

以上這種編譯mtd-utils的方法並沒有將所有需要編譯的庫安裝到編譯器目錄下,而是安裝到mtd-utils自動生成的$(builddir)目錄。這樣做的好處是避免因編譯不成功影響編譯器使用,缺點就是如果下次再編譯其他軟體也用到了相同的庫,那麼必須重新編譯庫,因為上次編譯的庫沒有安裝在

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交叉編譯

由於製作的busybox缺少ubiformat命令,然後自己移植mtd utils,這裡記錄下 環境 ubuntu虛擬機器19.04 mtd utils依賴zlib lzo e2fsprogs提供的庫和標頭檔案 zlib 1.2.11 lzo 2.10 e2fsprogs 1.45.3 mtd ut...

交叉編譯mtd utils方法

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