QuaZip是用C++、Qt对Zlib进行封装,用于压缩和解压文件的库,下载地址,但是这个小工具是基于zlib这个小软件的,而且由于开源界的一些协议,所以我们需要另外自己先得到这个库
具体细节见quazip的官方文档
我的环境是:manjaro deepin 17.1.12
因为Quazip是基于zlib的,所以我们需要先安装一下这个小软件
manjaro系统安装方式:
$ pacman -S zlib
ubuntu系统安装方式:
$ sudo apt-get install zlib
安装完zlib后输入命令
$ whereis zlib
可以找到zlib.h头文件
$ locate libz.so
可以找到libz.so动态库文件,这里需要注意这里的库文件名字是lib开头,因为这个小软件的名字其实就是 z
将这两个文件复制出来放到quazip这项目下,可以用QTCreator打开,当然可以用下面方式编译
按照官方文档里面的命令编译
$ cd /你的文件路径/quazip-x.y.z/quazip
$ qmake
$ make #编译
$ qmake LIBS+=-L/刚刚你复制libz.so库文件的路径 INCLUDEPATH+=/刚刚你复制zlib.h头文件的路径
$ make install #安装
#测试
$ cd /你的文件路径/quazip-x.y.z/qztest
$ qmake
$ make
$ ./qztest
(1)开一个QT控制台小项目
main.cpp内容如下
#include
#include "include/JlCompress.h"
#include
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
//压缩文件方法,注意参数文件后缀
if(false==JlCompress::compressDir("/home/cvter/桌面/main.zip","/home/cvter/桌面/abc"))
qDebug()<<"compress failed";
else
qDebug()<<"compress successed";
//这个不会用,需要自行查文档
// if(false == JlCompress::extractFile()
// qDebug()<<"compress failed";
// else
// qDebug()<<"compress successed";
return a.exec();
}
(2)在这个项目里面开两个文件夹include lib
把quazip里面的头文件复制到include中
以及他的几个库文件复制到lib文件中
然后在qt里面点击添加现有文件添加好头文件
点击添加库添加linux的外部库,然后就可以运行了
利用ldd查看文件是不是动态链接库,你可以测试你想测试的,假如qtCreator编译完成后的可执行文件,可以测试他有没有链接成功
动态装入器找到共享库要依靠两个文件 — /etc/ld.so.conf 和 /etc/ld.so.cache。如果您对 /etc/ld.so.conf 文件进行 vim 操作,您可能会看到一个与下面类似的清单:(我们需要添加我们的动态库路径进去)
$ vim /etc/ld.so.conf
/usr/.../lib
/usr/lib/mozilla
/usr/lib/.../lib
ld.so.conf 文件包含一个所有目录(/lib 和 /usr/lib 除外,它们会自动包含在其中)的清单,动态装入器将在其中查找共享库。
ld.so.cache
但是在动态装入器能“看到”这一信息之前,必须将它转换到 ld.so.cache 文件中。可以通过运行 ldconfig 命令做到这一点:
# sudo ldconfig
当 ldconfig 操作结束时,您会有一个最新的 /etc/ld.so.cache 文件,它反映您对 /etc/ld.so.conf 所做的更改。从这一刻起,动态装入器在寻找共享库时会查看您在 /etc/ld.so.conf 中指定的所有新目录
$ ldd 查看某文件是不是动态链接库
$ file 识别文件类型,辨别一些文件的编码格式
$ whereis 查找文件
$ locate 查找文件
$ export 见下面
要查看 ldconfig 可以“看到”的所有共享库,请输入:
# ldconfig -p | less
还有另一个方便的技巧可以用来配置共享库路径。有时候您希望告诉动态装入器在尝试任何 /etc/ld.so.conf 路径以前先尝试使用特定目录中的共享库。在您运行的较旧的应用程序不能与当前安装的库版本一起工作的情况下,这会比较方便。
LD_LIBRARY_PATH
要指示动态装入器首先检查某个目录,请将 LD_LIBRARY_PATH 变量设置成您希望搜索的目录。多个路径之间用冒号分隔;例如:
# export LD_LIBRARY_PATH="/usr/lib/old:/opt/lib"
导出 LD_LIBRARY_PATH 后,如有可能,所有从当前 shell 启动的可执行程序都将使用 /usr/lib/old 或 /opt/lib 中的库,如果仍不能满足一些共享库相关性要求,则转回到 /etc/ld.so.conf 中指定的库。
在当前解压文件夹的根目录下就多了一些文件,里面有我们需要的文件
另外有不需要的编译的方法,貌似在安装VS后,MSVC编译器会自带库
然后处理方式和Linux上一样了