一、概述 二、tar 命令源码下载 三、tar 源码移植步骤
一、概述
tar 命令是Linux系统下的解压缩命令,在使用busybox 移植文件系统时,busybox 一般有自带的,但可能出现有些版本比较旧,无法解压缩tar.gz 文件,前几天工作中就遇到这种情况:
$ tar zxf /config/data.tar.gz -C /root/config
tar: invalid option -- 'z'
BusyBox v1.31.0 (2021-03-04 14:00:21 CST) multi-call binary.
Usage: tar c|x|t [-hvokO] [-f TARFILE] [-C DIR] [-T FILE] [-X FILE] [--exclude PATTERN]... [FILE]...
Create, extract, or list files from a tar file
c Create
x Extract
t List
-f FILE Name of TARFILE ('-' for stdin/out)
-C DIR Change to DIR before operation
-v Verbose
-O Extract to stdout
-o Don't restore user:group
-k Don't replace existing files
-h Follow symlinks
-T FILE File with names to include
-X FILE File with glob patterns to exclude
--exclude PATTERN Glob pattern to exclude
$
如上,busybox 自带的tar 命令无法识别到z 选项,而busybox 是原厂编译好提供的,所以考虑自己移植tar 命令。
二、tar 命令源码下载
这里要下载的是GNU Tar ,https://www.gnu.org/software/tar/ 有它的详细的介绍。 源码下载地址是:ftp://ftp.gnu.org/gnu/tar/,我这里下载的是tar-1.27.1.tar.gz ,因为我使用的Ubuntu 是自带的tar命令也是1.27.1 的。
三、tar 源码移植步骤
tar-1.27.1.tar.gz 的移植比较顺利,没出现奇怪的问题,步骤就是解压源码、配置、编译 ; 把tar-1.27.1.tar.gz 复制到Ubuntu的一个目录下,执行如下命令:
tar zxvf tar-1.27.1.tar.gz
cd tar-1.27.1
mkdir result
CC=csky-abiv2-linux-gcc ./configure --prefix=`pwd`/result --host=arm-linux
make clean && make && make install
CC=csky-abiv2-linux-gcc 是指定交叉编译的gcc 工具,上面的几个命令执行完成后,在result/bin 目录会生成一个可执行文件tar ,将它拷贝到板子里就可以啦。我是拷贝到板子的/root/tar 路径,然后删除旧的链接,建立新的就可以正常使用tar 命令了
有帮助的话,麻烦点赞支持一下 *_^
|