# 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
```