打印
[嵌入式linux]

mkfs.jfss2交叉编译的问题???

[复制链接]
4100|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qhs050740|  楼主 | 2007-4-26 21:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我正在做JFFS2文件系统,OS已经检测到分区,现在需要给目标机安装MTD工具,需要交叉编译出mkfs.jffs2等mtd工具!

首先从ftp://ftp.uk.linux.org/pub/people/dwmw2/mtd/cvs/取得源码,
然后修改Makefile如下:

CROSS=arm-linux-

这几个不知什么意思,没有修改:
SBINDIR=/usr/sbin
MANDIR=/usr/man
INCLUDEDIR=/usr/include

可在make时,总是出错,真的不知为什么???
在mkfs.jffs2.c的67行出错,说是没有zlib.h,(67行是,#include <zlib.h>)可zlib.h文件明明就在 mtd/include/linux目录下,我很不明白,为什么编译不通过,当然,mkfs.jffs2工具没有产生,但是mkfs.jffs产生了。
如果我直接make就可以生成,但显然,这是gcc编译出的结果,不是我想要的。

大家有遇到过这个问题吗???

当然在这之前已经交叉编译了ZLIB库,没有问题,共生成了三个文件夹如下:include lib share ,不知这三个文件夹与MTD有什么关系???应该怎么修改Makefile?????? 

相关帖子

沙发
andante| | 2007-5-23 06:19 | 只看该作者

交叉编译mtd-utils-1.0.0

假设mtd-utils-1.0.0.tar.gz解压目录为mtd-utils-1.0.0
#cd mtd-utils-1.0.0

1) 修改Makefile
 CROSS=arm-linux-
 并确认以下两项都有加 -lz(链接zlib)
 mkfs.jffs2: crc32.o compr_rtime.o mkfs.jffs2.o compr_zlib.o compr.o
    $(CC) $(LDFLAGS) -o $@ $^ -lz

 jffs2reader: jffs2reader.o
    $(CC) $(LDFLAGS) -o $@ $^ -lz

2) 复制zlib头文件及库
 交叉编译zlib生成三个文件夹如下:include lib share(假设为home目录下)
  cp /home/include/* -> mtd-utils-1.0.0/include 下
  cp -ar /home/lib/* -> /usr/local/arm/3.4.4/arm-linux/lib(根据所使用交叉编译器,进行修改。

3) make ( 用file命令查看,如 file mkfs.jffs2 )
 #file mkfs.jffs2
 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
 可知:交叉编译成功。

 注:最近也整这个,所以把笔记整理了下。(走了不少弯路。。)

使用特权

评论回复
板凳
rockos| | 2007-5-23 09:59 | 只看该作者

re


交叉编译这个程序做什么?

它是用来制作文件系统映像的,只在宿主机上使用,没必要交叉编译它。

使用特权

评论回复
地板
andante| | 2007-5-23 14:35 | 只看该作者

有用

我交叉编译的是mtd-utils-1.0.0

其中带有的flash_erase, flash_eraseall, nandwrite等,用来擦写nand flash还是不错的,今天刚试用了下,还不错。~

mkfs.jffs2是用来制作文件系统映像,既然交叉编译,当然就是准备在target上使用。而且也并没有说,只能在宿主机上使用吧!

使用特权

评论回复
5
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 lib include三个文件夹,并且将include/* 拷贝到 mtd-utils-1.0.0/include 下
将lib、* 拷贝到我的交叉编译工具链文件夹/mnt/sdb/tools/arm-none-linux-gnueabi的lib目录下,然后make,出现
/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
collect2: ld returned 1 exit status
make: *** [mkfs.jffs2] 错误 1
请问是哪里的错误,我觉得我没做错吧,除了那个拷贝到工具链不知道是不是
/usr/local/arm/3.4.4/arm-linux/是指交叉编译工具链的位置吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

6

帖子

1

粉丝