qhs050740 发表于 2007-4-26 21:49

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&nbsp;&ltzlib.h&gt)可zlib.h文件明明就在&nbsp;mtd/include/linux目录下,我很不明白,为什么编译不通过,当然,mkfs.jffs2工具没有产生,但是mkfs.jffs产生了。<br />如果我直接make就可以生成,但显然,这是gcc编译出的结果,不是我想要的。<br /><br />大家有遇到过这个问题吗???<br /><br />当然在这之前已经交叉编译了ZLIB库,没有问题,共生成了三个文件夹如下:include&nbsp;lib&nbsp;share&nbsp;,不知这三个文件夹与MTD有什么关系???应该怎么修改Makefile??????&nbsp;<br />

andante 发表于 2007-5-23 06:19

交叉编译mtd-utils-1.0.0

假设mtd-utils-1.0.0.tar.gz解压目录为mtd-utils-1.0.0<br />#cd&nbsp;mtd-utils-1.0.0<br /><br />1)&nbsp;修改Makefile<br />&nbsp;CROSS=arm-linux-<br />&nbsp;并确认以下两项都有加&nbsp;-lz(链接zlib)<br />&nbsp;mkfs.jffs2:&nbsp;crc32.o&nbsp;compr_rtime.o&nbsp;mkfs.jffs2.o&nbsp;compr_zlib.o&nbsp;compr.o<br />&nbsp;&nbsp;&nbsp;&nbsp;$(CC)&nbsp;$(LDFLAGS)&nbsp;-o&nbsp;$@&nbsp;$^&nbsp;-lz<br /><br />&nbsp;jffs2reader:&nbsp;jffs2reader.o<br />&nbsp;&nbsp;&nbsp;&nbsp;$(CC)&nbsp;$(LDFLAGS)&nbsp;-o&nbsp;$@&nbsp;$^&nbsp;-lz<br /><br />2)&nbsp;复制zlib头文件及库<br />&nbsp;交叉编译zlib生成三个文件夹如下:include&nbsp;lib&nbsp;share(假设为home目录下)<br />&nbsp;&nbsp;cp&nbsp;/home/include/*&nbsp;-&gt&nbsp;mtd-utils-1.0.0/include&nbsp;下<br />&nbsp;&nbsp;cp&nbsp;-ar&nbsp;/home/lib/*&nbsp;-&gt&nbsp;/usr/local/arm/3.4.4/arm-linux/lib(根据所使用交叉编译器,进行修改。<br /><br />3)&nbsp;make&nbsp;(&nbsp;用file命令查看,如&nbsp;file&nbsp;mkfs.jffs2&nbsp;)<br />&nbsp;#file&nbsp;mkfs.jffs2<br />&nbsp;mkfs.jffs2:&nbsp;ELF&nbsp;32-bit&nbsp;LSB&nbsp;executable,&nbsp;ARM,&nbsp;version&nbsp;1&nbsp;(ARM),&nbsp;for&nbsp;GNU/Linux&nbsp;2.0.0,&nbsp;dynamically&nbsp;linked&nbsp;(uses&nbsp;shared&nbsp;libs),&nbsp;for&nbsp;GNU/Linux&nbsp;2.0.0,&nbsp;not&nbsp;stripped<br />&nbsp;可知:交叉编译成功。<br /><br />&nbsp;注:最近也整这个,所以把笔记整理了下。(走了不少弯路。。)<br />

rockos 发表于 2007-5-23 09:59

re

<br />交叉编译这个程序做什么?<br /><br />它是用来制作文件系统映像的,只在宿主机上使用,没必要交叉编译它。

andante 发表于 2007-5-23 14:35

有用

我交叉编译的是mtd-utils-1.0.0<br /><br />其中带有的flash_erase,&nbsp;flash_eraseall,&nbsp;nandwrite等,用来擦写nand&nbsp;flash还是不错的,今天刚试用了下,还不错。~<br /><br />mkfs.jffs2是用来制作文件系统映像,既然交叉编译,当然就是准备在target上使用。而且也并没有说,只能在宿主机上使用吧!

bigbird0122 发表于 2009-3-16 16:35

我按照您的方法编译没有成功,请帮忙看看哪里出问题了,

请问一下,我在交叉编译zlib-1.2.3,和mtd-utlis-1.0.0,我这里没有/usr/local/arm/3.4.4/arm-linux/目录,所以我就放在了别的地方了,然后编译zlib没有提示出错,并且产生了share&nbsp;lib&nbsp;include三个文件夹,并且将include/*&nbsp;拷贝到&nbsp;mtd-utils-1.0.0/include&nbsp;下<br />将lib、*&nbsp;拷贝到我的交叉编译工具链文件夹/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&nbsp;find&nbsp;-lz<br />collect2:&nbsp;ld&nbsp;returned&nbsp;1&nbsp;exit&nbsp;status<br />make:&nbsp;***&nbsp;&nbsp;错误&nbsp;1<br />请问是哪里的错误,我觉得我没做错吧,除了那个拷贝到工具链不知道是不是<br />/usr/local/arm/3.4.4/arm-linux/是指交叉编译工具链的位置吗?
页: [1]
查看完整版本: mkfs.jfss2交叉编译的问题???