在目標板上使用ubifs,需要一些UBI工具,可從mtd-utils工具中得到。
在以前的文章中介紹過mtd-utils-1.2.0的交叉編譯方式,但是這個版本的軟體只能獲得目標板的UBI工具,沒有包含主機端得UBI工具。 mtd-1.3.0以上則包含了目標端和主機的UBI工具。主機上編譯已經介紹過了,現在介紹交叉編譯mtd-utils-1.4.2。 同樣是在Fedora Core 9環境下編譯。當然,與交叉編譯mtd-1.2.0一樣,zlib、lzo都是不可缺少的,進行交叉編譯,並安裝到交叉工具鏈中,不再介紹。 交叉編譯mtd-1.4.2還需要uuid,uuid包含在e2fsprogs軟體包中,所以下載進行交叉編譯。 ----------------------------------------------------------------------------------
下載e2fsprogs:wget http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-1.41.14.tar.gz 交叉編譯指令碼:./configure --host=arm-vfp-linux --enable-elf-shlibs \ --prefix=/opt/nxp/gcc-4.3.2-glibc-2.7/arm-vfp-linux-gnu/makemake installmkdir /opt/nxp/gcc-4.3.2-glibc-2.7/arm-vfp-linux-gnu/include/uuidcp lib/uuid/uuid.h /opt/nxp/gcc-4.3.2-glibc-2.7/arm-vfp-linux-gnu/include/uuid/ 安裝libuuid以及uuid.h檔案。 ------------------------------------------------------------------------------------
下載mtd-utils-1.4.2wget ftp://ftp.infradead.org/pub/mtd-utils/mtd-utils-1.4.2.tar.bz2 交叉編譯:make CROSS=arm-vfp-linux-gnu-
WITHOUT_XATTR=1 編譯中會出現一些錯誤,可以不用理會。在arm-vfp-linux-gnu目錄下產生了flash_erase等工具。說明,沒有了flash_eraseall工具,已經被flash_erase替代了。 將arm-vfp-linux-gnu/lib目錄下的libmtd.a複製到交叉工具鏈目錄:sudo cp libmtd.a /opt/nxp/gcc-4.3.2-glibc-2.7/arm-vfp-linux-gnu/lib 進入ubi-utils目錄,輸入make CROSS=arm-vfp-linux-gnu-在rm-vfp-linux-gnu目錄下會產生ubimkvol/ubiattachden等在目標板上用的工具。 ----------------------------------------------------------------------------------------
下面給出一個更簡單的辦法,無需交叉編譯e2fsprogs: 由於僅限於在目標板上使用,目標板上一般無需mkfs.ubifs這樣的工具,所以可以不用編譯這個目錄,直接在Makefile中修改,去掉mkfs.ubifs目錄:#SUBDIRS = lib ubi-utils mkfs.ubifsSUBDIRS = lib ubi-utils 去掉與jffs2相關的項。make CROSS=arm-vfp-linux-gnu-
WITHOUT_XATTR=1make CROSS=arm-vfp-linux-gnu- -C ubi-utils 然後輸入:make CROSS=arm-vfp-linux-gnu-
WITHOUT_XATTR=1就可以了。在編譯中會出現jffs2相關的錯誤,如果不希望看到這些錯誤的話,可以在Makefile中將與jffs2相關的項去掉即可。 編譯完畢,在arm-vfp-linux-gnu目錄下產生flash_erase等工具,在arm-vfp-linux-gnu/lib目錄下產生libmtd庫,將libmtd.a複製到交叉工具鏈目錄。 然後進入ubi-utils目錄,輸入make CROSS=arm-vfp-linux-gnu-就可以了。