e2fsprogs制作嵌入式 mkfs.ext2 mkfs.ext3 mkfs.ext4
参考网友的方法
下载源码包 e2fsprogs:
http://sourceforge.net/projects/e2fsprogs/cd /arm-tools
tar xzvf e2fsprogs.tar.gz
cd e2fsprogs
mkdir release
cd release
vi configure-arm
#! /bin/sh
CC=arm-linux-gcc ../configure --enable-elf-shlibs --host=arm --prefix=/arm-tools/e2fsprogs/release/
chmod 777 configure-arm
./configure-arm
make
make install
如果成功,在 release 目录会生成 bin,sbin,lib.
复制 bin 目录的所有程序到开发板的 /usr/bin 目录,复制 sbin 目录的所有程序到开发板的 /usr/sbin 目录,复制 lib 目录的所有动态库文件到开发板的 /usr/lib 目录.
完成.
虽然说是如果成功,但是往往很多时候是会出现错误的,我在编译过程中就出现了这个错误error: static declaration of 'fallocate64' follows non-static declaration
我的GCC是arm-linux-gcc 4.4.1版本,经过几番折腾,把misc目录下e4defrag.c这个文件的251行的函数修改为非静态的就可以了,即修改成如下所示:
int fallocate64(int fd, int mode, loff_t offset, loff_t len)
{
return syscall(__NR_fallocate, fd, mode, offset, len);
}
另外要注意配置时的arm-linux-gcc目录以及--prefix这个参数的路径。我的配置如下:
CC=/usr/local/arm/arm-2009q3/bin/arm-linux-gcc ../configure --enable-elf-shlibs --host=arm-linux --prefix=/mydisk/workdisk/e2fsprogs/arm-tools/e2fsprogs-1.42.9/release
编译完成把bin、lib、sbin目录下所有的文件拷贝到制作的根文件系统即可。拷贝是加上-d选项。拷贝命令举例:
cp *so* /nfsboot/my_system/system/usr/lib/ -d(首先进入release/lib目录)
其他两个目录完整拷贝即可。
在运行命令前要使用export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib这个命令,加载动态库路径到环境变量,也可以设置在etc/profile文件中。
一些工具的说明:
更多推荐
所有评论(0)