mtd utils tool installation

来源:互联网 发布:汽车零件号查询软件 编辑:程序博客网 时间:2024/06/06 00:58

先介绍一下平台环境:

开发环境: Win7+VirtualBox+Debian

工具链:arm-linux-

硬件平台:Tq2440 arm9开发板

使用到的mtd-utils软件包请到 这里 下载,压缩包中已经含有编译mtd-utils用到的所有软件,分别是:

zlib-1.2.8.tar

lzo-2.06.tar

e2fsprogs-1.42.8.tar

mtd-utils-1.4.9.tar

先将压缩包在Win7下解压,然后将得到的上面的四个软件包拷贝到debian。

这里有几个网址,可以下载到比较新的版本:

如果下载上面的软件包,在make的过程中出现不能解决的问题,可以尝试下载下面相应的工具。

mtd-utils                    http://www.mmnt.net/db/0/0/ftp.infradead.org/pub/mtd-utils

e2fsprogs                  http://sourceforge.net/projects/e2fsprogs/files/e2fsprogs/

lzo                            http://www.oberhumer.com/opensource/lzo/download/

zlib                            http://zlib.net/

下面开始进行编译:

参考: http://processors.wiki.ti.com/index.php/MTD_Utilities#MTD-Utils_Compilation

第一步、  编译安装zlib

tar -xzf zlib-1.2.8.tar.gz

cd zlib-1.2.8/

./configure --prefix=/home/pengdl/tq2440/my_mtd_utils/mtd_utils

修改Makefile

CC=arm-linux-gcc 

LDSHARED=arm-linux-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map 

CPP=arm-linux-gcc -E 

AR=arm-linux-ar 

RANLIB=arm-linux-ranlib 

修改完成后保存,执行下面的命令

make

make install

第二步、编译安装lzo

tar -xzvf lzo-2.06.tar.gz

cd lzo-2.06/

./configure --host=arm-linux --prefix=/home/pengdl/tq2440/my_mtd_utils/mtd_utils

make

make install

第三步、编译安装e2fsprogs

tar -xzvf e2fsprogs-1.42.8.tar.gz

cd e2fsprogs-1.42.8/

./configure --host=arm-linux --prefix=/home/pengdl/tq2440/my_mtd_utils/mtd_utils

make

make install

cd ./lib/uuid/

make install

第四步、编译安装mtd-utils

tar -xjvf mtd-utils-1.4.9.tar.bz2

cd mtd-utils-1.4.9/

修改Makefile:

CPPFLAGS += -I./include -I$(BUILDDIR)/include -I./ubi-utils/include $(ZLIBCPPFLAGS) $(LZOCPPFLAGS)

PREFIX = /home/pengdl/tq2440/my_mtd_utils/mtd_utils 
CROSS=arm-linux- 
ZLIBCPPFLAGS = -I$(PREFIX)/include 
ZLIBLDFLAGS = -L$(PREFIX)/lib 
LZOCPPFLAGS = -I$(PREFIX)/include 
LZOLDFLAGS = -L$(PREFIX)/lib 
LDFLAGS += $(ZLIBLDFLAGS) $(LZOLDFLAGS) 
CFLAGS ?= -O2 -g $(ZLIBCPPFLAGS) $(LZOCPPFLAGS) 

上面的内容插入的位置如下:

# -*- sh -*-
VERSION = 1.5.0
#added contents beginning!
PREFIX = /home/book/s3c2440/drivers/nand/mtd_utils_tools_package/utilstool
CROSS=arm-linux-
ZLIBCPPFLAGS = -I$(PREFIX)/include
ZLIBLDFLAGS = -L$(PREFIX)/lib
LZOCPPFLAGS = -I$(PREFIX)/include
LZOLDFLAGS = -L$(PREFIX)/lib
LDFLAGS += $(ZLIBLDFLAGS) $(LZOLDFLAGS)
CFLAGS ?= -O2 -g $(ZLIBCPPFLAGS) $(LZOCPPFLAGS)
#added contents ended!


CPPFLAGS += -I./include -I$(BUILDDIR)/include -I./ubi-utils/include $(ZLIBCPPFLAGS) $(LZOCPPFLAGS)

修改common.mk,将PREFIX=/usr注释掉

#PREFIX=/usr

保存,执行下面的命令

WITHOUT_XATTR=1 make
如果make时出现不能解决的问题,可以尝试下载高版本的
make install

执行完后,会在/home/pengdl/tq2440/my_mtd_utils/mtd_utils/sbin生成需要的工具:

image

使用的是否只需要将相应的工具拷贝到根文件系统的/sbin下即可,比如想测试一下mtdinfo能不能用,

cp mtdinfo /source/rootfs/sbin/    (我的根文件系统是用nfs挂载实现的)

在串口终端中执行下面的命令

image

可以用。

也可以看看这些工具依赖那些动态库

arm-linux-objdump –x mtdinfo | grep NEEDED

image

这些工具依赖库有:

libc.so.6、libdl.so.2、libgcc_s.so.1、libuuid.so.1、libm.so.6、libz.so.1、libpthread.so.0,所以根文件系统中应该有这些库。

libc、libgcc、libdl、ligpthread、libm这几个库在工具链中一般都有

libz在zlib-1.2.8下就有(工具链中也有,/opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/libc/armv4t/usr/lib)

libuuid也在工具链中:/opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/libc/armv4t/usr/lib

这里有一个脚本,用于获取当前目录下的依赖关系:

#!/bin/bash
 
file=bin.txt
file_list="`ls .`"
 
rm -rf $file
touch $file
for i in $file_list;do
    
    du -sh $i >>$file
    echo "" >>$file
    arm-linux-objdump -x $i | grep NEEDED >>$file
    
done
0 0
原创粉丝点击