ARM移植file命令

ARM 368浏览

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上成功运行!