红联Linux门户
Linux帮助

ARM移植file命令

发布时间:2017-05-16 11:42:25来源:linux网站作者:zhengqijun_
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上成功运行!
 
本文永久更新地址:http://www.linuxdiyf.com/linux/30820.html