编译mtd-utils

1.准备工具

mtd-utils-1.4.5.tar.bz2 ftp://ftp.infradead.org/pub/ mtd-utils/

或http://download.csdn.net/source/3531827

zlib-1.2.5.tar.bz2 http://zlib.net 或http://download.csdn.net/source/3531822

lzo-2.04.tar.gz http://www.oberhumer.com/opensource/lzo/download/

原文:http://blog.chinaunix.net/uid-12216245-id-2235731.html

e2fsprogs-1.41.14.tar.gz http://sourceforge.net/projects/e2fsprogs/


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 <sys/xattr.h>

#include <sys/acl.h>

#endif

#include <byteswap.h>

#define crc32 __zlib_crc32

#include <zlib.h>

#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=/home/wloveg/ 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=/home/wloveg/ 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=/home/wloveg/ 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)目录。这样做的好处是避免因 编译不成功影响 编译器使用,缺点就是如果下次再 编译其他软件也用到了相同的库,那么必须重新 编译库,因为上次 编译的库没有安装在
14084758_jlPw.png

转载于:https://my.oschina.net/yuyang/blog/89554

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值