Tq2440 上移植mtd-utils工具
先介绍一下平台环境:
开发环境: Win7+VirtualBox+Debian
工具链:arm-linux-
硬件平台:Tq2440 arm9开发板
zlib-1.2.8.tar
lzo-2.06.tar
e2fsprogs-1.42.8.tar
mtd-utils-1.4.9.tar
先将压缩包在Win7下解压,然后将得到的上面的四个软件包拷贝到debian。
这里有几个网址,可以下载到比较新的版本:
mtd-utils
e2fsprogs
lzo
zlib
下面开始进行编译:
参考:
第一步、 编译安装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:
PREFIX = /home/pengdl/tq2440/my_mtd_utils/mtd_utilsCROSS=arm-linux-ZLIBCPPFLAGS = -I$(PREFIX)/includeZLIBLDFLAGS = -L$(PREFIX)/libLZOCPPFLAGS = -I$(PREFIX)/includeLZOLDFLAGS = -L$(PREFIX)/libLDFLAGS += $(ZLIBLDFLAGS) $(LZOLDFLAGS)CFLAGS ?= -O2 -g $(ZLIBCPPFLAGS) $(LZOCPPFLAGS)
#CFLAGS ?= -static -O2 -g $(ZLIBCPPFLAGS) $(LZOCPPFLAGS)
修改common.mk,将PREFIX=/usr注释掉
#PREFIX=/usr
保存,执行下面的命令
WITHOUT_XATTR=1 makemake install
执行完后,会在/home/pengdl/tq2440/my_mtd_utils/mtd_utils/sbin生成需要的工具:
使用的是否只需要将相应的工具拷贝到根文件系统的/sbin下即可,,比如想测试一下mtdinfo能不能用,
cp mtdinfo /source/rootfs/sbin/ (我的根文件系统是用nfs挂载实现的)
在串口终端中执行下面的命令
可以用。
也可以看看这些工具依赖那些动态库
arm-linux-objdump –x mtdinfo | grep NEEDED
这些工具依赖库有:
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.txtfile_list= rm -rf $filetouch $filefor i in $file_list;dodu -sh $i >>$fileecho “” >>$filearm-linux-objdump -x $i | grep NEEDED >>$filedone
完!!
posted on
用最少的浪费面对现在