# linux-file **Repository Path**: shaoguangcn/linux-file ## Basic Information - **Project Name**: linux-file - **Description**: linux下file命令源代码,官方github仓库https://github.com/file/file - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: http://ftp.astron.com/pub/file/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-02-13 - **Last Updated**: 2024-10-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # linux-file ### 介绍 linux 下 file 命令源代码。 - 官方仓库:http://ftp.astron.com/pub/file/ (下载速度实在太慢,只有几百b/s)。 - 官方github仓库:https://github.com/file/file (也可在此下载最新版本的源代码) ### 文件列表 | Name | Last modified | Size | | --- | --- | --- | | file-4.26.tar.gz | 2008-08-30 10:07 | 571K | | file-5.00.tar.gz | 2009-02-03 20:51 | 587K | | file-5.01.tar.gz | 2009-04-30 21:23 | 601K | | file-5.02.tar.gz | 2009-05-04 15:27 | 601K | | file-5.03.tar.gz | 2009-05-06 20:52 | 602K | | file-5.04.tar.gz | 2010-01-24 18:41 | 607K | | file-5.05.tar.gz | 2011-01-17 19:47 | 583K | | file-5.06.tar.gz | 2011-04-14 21:17 | 587K | | file-5.07.tar.gz | 2011-05-11 01:30 | 583K | | file-5.08.tar.gz | 2011-08-03 16:56 | 591K | | file-5.09.tar.gz | 2011-09-16 21:25 | 593K | | file-5.10.tar.gz | 2011-12-30 16:56 | 594K | | file-5.11.tar.gz | 2012-02-21 19:19 | 596K | | file-5.12.tar.gz | 2013-01-04 00:50 | 618K | | file-5.13.tar.gz | 2013-02-22 14:06 | 627K | | file-5.14.tar.gz | 2013-03-21 17:54 | 633K | | file-5.15.tar.gz | 2013-09-24 15:24 | 641K | | file-5.16.tar.gz | 2013-12-01 19:24 | 643K | | file-5.17.tar.gz | 2014-02-12 23:40 | 693K | | file-5.18.tar.gz | 2014-03-26 15:30 | 699K | | file-5.19.tar.gz | 2014-06-12 16:34 | 702K | | file-5.20.tar.gz | 2014-10-10 19:06 | 709K | | file-5.21.tar.gz | 2014-12-11 01:11 | 715K | | file-5.22.tar.gz | 2015-01-02 20:25 | 715K | | file-5.23.tar.gz | 2015-06-10 18:10 | 720K | | file-5.24.tar.gz | 2015-07-09 15:29 | 721K | | file-5.25.tar.gz | 2015-09-16 13:53 | 722K | | file-5.26.tar.gz | 2016-04-16 22:48 | 755K | | file-5.27.tar.gz | 2016-05-13 16:02 | 756K | | file-5.28.tar.gz | 2016-06-13 23:45 | 760K | | file-5.29.tar.gz | 2016-10-25 14:41 | 766K | | file-5.30.tar.gz | 2017-02-10 17:28 | 771K | | file-5.31.tar.gz | 2017-05-23 17:46 | 773K | | file-5.32.tar.gz | 2017-09-02 09:08 | 778K | | file-5.33.tar.gz | 2018-04-15 19:02 | 798K | | file-5.34.tar.gz | 2018-07-25 05:57 | 821K | | file-5.35.tar.gz | 2018-10-18 23:40 | 845K | | file-5.36.tar.gz | 2019-02-20 15:21 | 855K | | file-5.37.tar.gz | 2019-05-17 02:30 | 867K | | file-5.38.tar.gz | 2019-12-17 02:15 | 911K | | file-5.39.tar.gz | 2020-06-15 00:06 | 932K | | file-5.40.tar.gz | 2021-03-31 00:29 | 1.0M | | file-5.41.tar.gz | 2021-10-18 16:50 | 1.0M | ### arm linux 移植步骤 #### 1 查看主机file版本 ```bash file -v ``` ``` wushg@ubuntu:~$ file -v file-5.38 magic file from /etc/magic:/usr/share/misc/magic ``` #### 2 下载对应版本的源代码并解压 如果源代码版本低于主机上的file版本,编译时会报错。高版本没有尝试过。 ```bash mkdir ~/workspace mkdir ~/workspace/arm-file cp file-5.38.tar.gz ~/workspace/arm-file cd ~/workspace/arm-file tar -zxvf file-5.38.tar.gz ``` #### 3 进入源代码目录,编写构建脚本(build.sh) 确保交叉编译器能正常运行 ```bash cd file-5.38 vi build.sh ``` ```shell #!/bin/sh CC_PREFIX=arm-none-linux-gnueabi- ./configure --host=arm-linux --enable-static --disable-shared CC=${CC_PREFIX}gcc AS=${CC_PREFIX}as LD=${CC_PREFIX}ld AR=${CC_PREFIX}ar RANLIB=${CC_PREFIX}ranlib ``` #### 4 构建并修改 MakeFile ```bash chmod a+x build.sh ./build.sh vi MakeFile ``` 修改 MakeFile 文件中的CFLAGS(第218行左右),添加--static选项: ```makefile CFLAGS = -g -O2 --static ``` #### 5 修改 file-5.38/src/file.c 文件 将 main() 函数中的(第180行左右) ```c const char *magicfile = NULL; /* where the magic is */ ``` 修改为: ```c const char *magicfile = "/usr/bin/Magdir.mgc"; /* where the magic is */ ``` #### 6 编译 执行 make 命令 ```bash make ``` 生成的file可执行文件位于 file-5.38/src 目录下 #### 7 移植到开发板 将 file可执行文件拷贝至目标主机的 /usr/bin 目录下,将 file-5.38/magic/Magdir 目录拷贝至目标主机的 /usr/bin 目录下。 ```bash cp file /usr/bin cp -r Magdir /usr/bin ``` 在目标主机上生成 Magdir.mgc 文件: ```bash file -C -m Magdir ``` 至此,可以使用 file 命令了: ``` [root@arm-linux /usr/bin]#file -v file-5.38 magic file from /usr/bin/Magdir.mgc [root@arm-linux /usr/bin]#file file file: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 2.6.16, with debug_info, not stripped ```