ARM移植file命令的详细步骤:
1、下载file 源代码
从下面ftp 站点下载Linux file 命令源代码file-5.04.tar.gz
ftp://ftp.astron.com/pub/file
2、使用tar 命令对文件进行解压。
-C选项是指定解压目录
tar xvzf file-5.04.tar.gz -C /root/ARM/
3、编写build.sh 脚本。
build.sh 文件的内容如下所示:
#!/bin/sh
CROSS=arm-linux-
./configure --host=arm-linux --enable-static --disable-shared CC=${CROSS}gcc AS=${CROSS}as LD=${CROSS}ld AR=${CROSS}ar RANLIB=${CROSS}ranlib
这个脚本的意思是指定编译器为交叉编译器arm-linux- ,其中还必须指定为静态编译,因为开发板并没有库文件。
给build.sh 脚本赋予执行权限!
chmod a+x build.sh
4、执行build.sh 脚本。
[root@codeMonkey file-5.04_ok]# ./build.sh
...... ...
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating magic/Makefile
config.status: creating tests/Makefile
config.status: creating doc/Makefile
config.status: creating python/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
中间过程省略,出现最后几句就没有问题。
5、修改 file-5.04/src/Makefile 文件。
添加--static到CFLAGS里,使用静态链接。
CFLAGS = -g -O2 --static
6、修改源代码file-5.04/src/file.c 文件。
将file.c 文件中的main() 函数的 const char *magicfile = NULL;/* where the magic is*/
改为:
const char *magicfile = "/usr/bin/magic.mgc";
7、执行make 命令。
make 编译生成file 二进制文件,在 src/ 目录下。
8、将file 二进制文件和Magdir/ 目录下载到开发板的/tmp 目录下。
file 二进制文件在src/ 目录下,Magdir/ 目录是在magic/ 目录下。
提示:这里可以使用nfs 挂载到开发板根文件系统中。
9、使用file命令生成magic.mgc 文件。
[root@MINI2440 /tmp]# ./file -C -m Magdir
[root@MINI2440 /tmp]# ls Magdir.mgc Magdir.mgc
10、拷贝命令到/usr/bin 目录下。
a、将Magdir.mgc 文件拷贝到/usr/bin 目录下,并在usr/bin 目录下将Magdir.mgc 改名为magic.mgc。
b、将file 命令拷贝到/usr/bin 目录下。
[root@MINI2440 /tmp]# cp Magdir.mgc /usr/bin
[root@MINI2440 /tmp]# cp file /usr/bin
现在可以在ARM上使用file命令了。
看看file 命令的用法:
[root@MINI2440 /]# file
Usage: file [-bchikLNnprsvz0] [--apple] [--mime-encoding] [--mime-type]
[-e testname] [-F separator] [-f namefile] [-m magicfiles] file ...
file -C [-m magicfiles]
file [--help]
使用file 命令:
[root@MINI2440 bin]# file file
file: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, for GNU/Linux 2.6.14, not stripped
file 命令移植成功,在ARM上成功运行!