目的和环境

arm7的板子上直接格式化ide硬盘上的分区为Reiserfs分区

编译工具为arm-elf-gcc

开发环境 redhat 9.0

2. 下载源码包 reiserfsprogs-3.6.20.tar.gz   官方网站http://namesys.com/

3. 具体过程

l         解压缩 tar zxf reiserfsprogs-3.6.20.tar.gz

        cd reiserfsprogs-3.6.20

l         CC=arm-elf-gcc ./configure --host=arm

l         make 出现错误 prints.c:14: printf.h: ????????? 找不到printf.h

uClibc-0.9.26的源代码中复制 printf.h reiserfsprogs-3.6.20\libreiserfs

l         make 出现错误reiserfs_warning中未定义的函数

        修改reiserfsprogs-3.6.20\libreiserfs\prints.c

void reiserfs_warning (FILE * fp, const char * fmt, ...)

{

    va_list args;

    va_start (args, fmt);

    vfprintf (fp, fmt, args);

    va_end (args);

}

l         继续make   出现一大堆重定义错误

        修改 reiserfsprogs-3.6.20/config.h

        注释掉 //#define HAVE_ASM_UNALIGNED_H 1

此时虽然还有错误但reiserfsprogs-3.6.20\utils\mkfs中已经产生了可执行文件mkfs.reiserfs,但是是不能用的,还有两个问题一个是链接参数没有加 –elf2flt,还有就是编译参数中有-fPIC –DPIC的定义

        修改 reiserfsprogs-3.6.20/configure

大概7754行修改为如下

else

if test "x" = "x$PRESET_CFLAGS"; then

        CFLAGS="-Wall -O2 -elf2flt"

fi

fi

 

#if test x$pic = xyes; then

#      CFLAGS="$CFLAGS -fPIC -DPIC"

#fi

l         重新来过

        make clean

CC=arm-elf-gcc ./configure --host=arm

        修改 reiserfsprogs-3.6.20/config.h   //#define HAVE_ASM_UNALIGNED_H 1

        make

l         搞定 reiserfsprogs-3.6.20\utils\mkfs\mkfs.reiserfs就是可执行文件了