目的和环境
在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就是可执行文件了