如何在Linux下解压tar.lz文件

如何在Linux下解压tar.lz文件,第1张

为了编译wpa_supplicant2.3(最新版)

下载了它的一个依赖包,发现文件格式是你tar.lz结尾,在Ubuntu中右键解压不了,然后就打开---->>首选项----->>>新立得软件安装器

输入lzi 即可看见下边的lzip软件包,双击选上,应用,安装完了之后,再右键,几个解压啦!

我下了zlib,解压放在了linux服务器下,自己编了个程序

#include <iostream>

#include <vector>

#include "zlib.h"

using namespace std

int main()

{

const unsigned char strSrc[] = "jasddsfsfaffafasd"

unsigned char buff[1024] = {0}, strDst[1024] = {0}

unsigned long srcLen = sizeof(strSrc), bufLen = sizeof(buff), dstLen = sizeof(strDst)

//压缩

compress(buff, &bufLen, strSrc, srcLen)

//解压缩

uncompress(strDst, &dstLen, buff, bufLen)

cout <<strDst <<endl

return 0

}

但是程序编译出错

undefined reference to `compress'

undefined reference to `uncompress'

linux下不会使用库,所以出错了,哪位能帮我详细的说下linux下怎么使用库的。

答:你把zlib包解压后要编译一下,它会生成一个zlib.so之类的库文件,

编译的时候引用这个库文件就可以#include"zlib.h"了,

就像$ gcc -o z z.c -lz

z就是生成的可执行文件,z.c就是你的代码,-lz就是引用zlib.so了

引用 4 楼 haihai05 的回复:换个问法,写的那个简单的程序为什么会报那样的错呢?不是说给例子。主要是想明白怎么样在linux下使用像zlib包这样的东东的。是直接解压后放在linux下就可以#include"zlib.h"

给自己的程序服务了吗?如果是但是上面那个为什么不对呢?引用 1 楼 showman 的回复:

zlib包不是有个example.c吗?

一个极简单的例程:

$ cat z.c

#include <stdio.h>

...

压缩比率很难说,未压缩数据的复杂程度会影响这个比率。

常见压缩算法按压缩比率由大到小排:

paq系 >lzma系 >rar >bzip2 >lz系(gz、zip) >lzo

paq相当费时而且耗内存,有点不值得使用;lzma是目前硬件水平可接受的高压缩比算法(7z就属于此类洐生品);rar没什么好说的,商业算法,我觉得比bzip2费时上还好点;lzo虽然压缩比率不那么历害,但高速、内存需求极少是其亮点,在需要实时压缩、解压的场合非常受欢迎,例如网络通迅、数据库。

linux中最常用tar.gz格式(winrar支持解压)。

命令通常是这样: tar czvf abc.tar.gz name1 name2 ...

解释一下参数czvf

c 建立

v 详细信息

f 输出文件,后面一定跟生成的压缩文件名。

z 用gz压缩

(其它压缩还有:

Z compress压缩,几乎没人用的老旧lz算法

j bzip2压缩

J xz压缩,lzma的改进算法

也可在最后加参数 --lzop 或 --lzip 或 --lzma)

生成tar.gz其实经过两个处理过程的,首先tar将所有文件的信息集合成一个无压缩的tar格式(无需写到磁盘),再用gz压缩算法处理(很像rar的solid选项)。这样的坏处是,如果你只要解压其中一个文件,解压时也要读取压缩文件前面很大部分内容。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7178512.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存