一、概述
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
命令了