关于file命令报错找不到magic文件的问题

嵌入式板子上执行file命令,提示
file: could not find any valid magic files! (No such file or directory)
这是因为板子上file软件包没有在正确的路径下安装
正常情况下,如果configure的时候不指定--prefix选项,那么--prefix的默认值为/usr/local(可通过./configure -h看到)
也就是说file软件默认是安装在/usr/local目录下的,magic.mgc文件应该放到/usr/local/share/misc里面
make install DESTDIR=$(pwd)/_install后,进入_install文件夹看到的是usr文件夹

假如configure的时候指定了--prefix=/myusr,那么软件就应该安装到板子上的/myusr文件夹中,magic.mgc就应该放到/myusr/share/misc里面
此时DESTDIR文件夹进去之后看到的就是myusr文件夹
所以说--prefix是绝对不能乱指定的

make install DESTDIR=XXX的时候,指定的DESTDIR目录是生成的安装文件在电脑上的保存目录,在电脑上随便保存到哪里都可以
但是复制到板子上时,无论--prefix是什么,一定要把DESTDIR目录里面的内容复制到板子的根目录,不能是其他的目录

交叉编译的时候,切记不能不带DESTDIR参数直接make install,否则板子上的软件就被安装到电脑上了!

【file命令编译安装的详细过程】

在电脑上(装的是Fedora 34系统)下载file的源代码:sudo dnf download --source file
解压:
rpm2cpio file-5.39-6.fc34.src.rpm | cpio -div
tar xf file-5.39.tar.gz
配置:
cd file-5.39
./configure --host=arm-none-linux-gnueabihf

编译:make
生成安装文件:make install DESTDIR=$(pwd)/_install
制作成压缩包:
cd _install
sudo chown -R root:root usr
tar czf file-5.39-binary.tar.gz usr
压缩包打开之后,看到的就是usr文件夹,所属用户和组都为root。

然后把file-5.39-binary.tar.gz上传到板子,tar xf file-5.39-binary.tar.gz -C /解压到根目录
记住,无论configure的--prefix是什么,都必须将压缩包解压到根目录(-C /)
这是因为DESTDIR文件夹(也就是_install文件夹)的基准是板子的根目录,我们是在_install文件夹下打的包,那么解压肯定就要解压到板子的根目录下
PATH环境变量添加/usr/local/bin(或者“--prefix指定的其他目录”/bin):export PATH=$PATH:/usr/local/bin
然后file命令就可以直接用了,不会报找不到magic文件的错误

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巨大八爪鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值