mkfs.jfss2交叉编译的问题???
我正在做JFFS2文件系统,OS已经检测到分区,现在需要给目标机安装MTD工具,需要交叉编译出mkfs.jffs2等mtd工具!<br /><br />首先从ftp://ftp.uk.linux.org/pub/people/dwmw2/mtd/cvs/取得源码,<br />然后修改Makefile如下:<br /><br />CROSS=arm-linux-<br /><br />这几个不知什么意思,没有修改:<br />SBINDIR=/usr/sbin<br />MANDIR=/usr/man<br />INCLUDEDIR=/usr/include<br /><br />可在make时,总是出错,真的不知为什么???<br />在mkfs.jffs2.c的67行出错,说是没有zlib.h,(67行是,#include <zlib.h>)可zlib.h文件明明就在 mtd/include/linux目录下,我很不明白,为什么编译不通过,当然,mkfs.jffs2工具没有产生,但是mkfs.jffs产生了。<br />如果我直接make就可以生成,但显然,这是gcc编译出的结果,不是我想要的。<br /><br />大家有遇到过这个问题吗???<br /><br />当然在这之前已经交叉编译了ZLIB库,没有问题,共生成了三个文件夹如下:include lib share ,不知这三个文件夹与MTD有什么关系???应该怎么修改Makefile?????? <br />交叉编译mtd-utils-1.0.0
假设mtd-utils-1.0.0.tar.gz解压目录为mtd-utils-1.0.0<br />#cd mtd-utils-1.0.0<br /><br />1) 修改Makefile<br /> CROSS=arm-linux-<br /> 并确认以下两项都有加 -lz(链接zlib)<br /> mkfs.jffs2: crc32.o compr_rtime.o mkfs.jffs2.o compr_zlib.o compr.o<br /> $(CC) $(LDFLAGS) -o $@ $^ -lz<br /><br /> jffs2reader: jffs2reader.o<br /> $(CC) $(LDFLAGS) -o $@ $^ -lz<br /><br />2) 复制zlib头文件及库<br /> 交叉编译zlib生成三个文件夹如下:include lib share(假设为home目录下)<br /> cp /home/include/* -> mtd-utils-1.0.0/include 下<br /> cp -ar /home/lib/* -> /usr/local/arm/3.4.4/arm-linux/lib(根据所使用交叉编译器,进行修改。<br /><br />3) make ( 用file命令查看,如 file mkfs.jffs2 )<br /> #file mkfs.jffs2<br /> mkfs.jffs2: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.0.0, dynamically linked (uses shared libs), for GNU/Linux 2.0.0, not stripped<br /> 可知:交叉编译成功。<br /><br /> 注:最近也整这个,所以把笔记整理了下。(走了不少弯路。。)<br />re
<br />交叉编译这个程序做什么?<br /><br />它是用来制作文件系统映像的,只在宿主机上使用,没必要交叉编译它。有用
我交叉编译的是mtd-utils-1.0.0<br /><br />其中带有的flash_erase, flash_eraseall, nandwrite等,用来擦写nand flash还是不错的,今天刚试用了下,还不错。~<br /><br />mkfs.jffs2是用来制作文件系统映像,既然交叉编译,当然就是准备在target上使用。而且也并没有说,只能在宿主机上使用吧!我按照您的方法编译没有成功,请帮忙看看哪里出问题了,
请问一下,我在交叉编译zlib-1.2.3,和mtd-utlis-1.0.0,我这里没有/usr/local/arm/3.4.4/arm-linux/目录,所以我就放在了别的地方了,然后编译zlib没有提示出错,并且产生了share lib include三个文件夹,并且将include/* 拷贝到 mtd-utils-1.0.0/include 下<br />将lib、* 拷贝到我的交叉编译工具链文件夹/mnt/sdb/tools/arm-none-linux-gnueabi的lib目录下,然后make,出现<br />/mnt/sdb/tools/arm-none-linux-gnueabi/bin/../lib/gcc/arm-none-linux-gnueabi/3.4.4/../../../../arm-none-linux-gnueabi/bin/ld:cannnot find -lz<br />collect2: ld returned 1 exit status<br />make: *** 错误 1<br />请问是哪里的错误,我觉得我没做错吧,除了那个拷贝到工具链不知道是不是<br />/usr/local/arm/3.4.4/arm-linux/是指交叉编译工具链的位置吗?
页:
[1]