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/
- 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)目录。这样做的好处是避免因编译不成功影响编译器使用,缺点就是如果下次再编译其他软件也用到了相同的库,那么必须重新编译库,因为上次编译的库没有安装在
- vi tags setting (18分钟前)
- REHAT5.5 squid配置 (24分钟前)
- Mini-XML入门基础 Getting Started with Mini-XML (25分钟前)
- PADS从原理图到PCB整体简易流程 (28分钟前)
- C/C++的XML解析库 (29分钟前)
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/
- 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)目录。这样做的好处是避免因编译不成功影响编译器使用,缺点就是如果下次再编译其他软件也用到了相同的库,那么必须重新编译库,因为上次编译的库没有安装在
- vi tags setting (18分钟前)
- REHAT5.5 squid配置 (24分钟前)
- Mini-XML入门基础 Getting Started with Mini-XML (25分钟前)
- PADS从原理图到PCB整体简易流程 (28分钟前)
- C/C++的XML解析库 (29分钟前)