格式化SD卡工具e2fsprogs嵌入式版本制作

1. 下载源码包e2fsprogs,本人下载的版本是1.44.1:

http://sourceforge.net/projects/e2fsprogs/

2. 解压源码包到某个目录,本人的是:/root/Desktop/common;

3. cd进入到刚解压的源码目录,并建立新目录 release 用于安装编译连接后的程序;

4. cd进入release目录,并建立配置脚本configure-arm,根据我们的应用目标,配置选项中大部分采用默认配置,脚本内容如下:

#! /bin/sh

CC=arm-linux-gcc ../configure --enable-elf-shlibs --host=arm --prefix=/root/Desktop/common/e2fsprogs-1.41.12/release/

5. 输入命令chmod +x configure-arm,让脚本具有执行权限;

6. 执行脚本:./configure-arm

7. make

8. make install

9. 如果上面命令执行成功的话,会在release 目录里面生成 bin, sbin, lib 等目录;

10. 复制 bin 目录的所有程序到开发板的 /usr/bin 目录,复制 sbin 目录的所有程序到开发板的 /usr/sbin 目录,复制 lib 目录的所有动态库文件到开发板的 /usr/lib 目录;

11. 大功告成。



本人在编译时很顺利通过,以下说明仅供参考:

虽然说是如果成功,但是往往很多时候是会出现错误的,我在编译过程中就出现了这个错误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文件中。



猜你喜欢

转载自blog.csdn.net/houxiaoliwang/article/details/80103050