Linux、window下编译quazip和测试

文章目录

    • 一、quazip简介
    • 二、linux编译方法
      • 1、quazip编译与配置
        • (1)首先安装zlib
        • (2)复制头文件和动态库文件
        • (3)编译
      • 2、测试
      • 3、遇见问题和学习到的命令
        • (1)项目无法打开库文件
        • (2)学习到命令
        • (3)ldconfig 技巧
    • 三、windows编译方法
      • 1、[下载zlib](http://www.zlib.net/),利用WinRAR解压出来
      • 2、利用VS来编译,进入下面终端
      • 3、开始编译nmake -f win32/Makefile.msc

一、quazip简介

QuaZip是用C++、Qt对Zlib进行封装,用于压缩和解压文件的库,下载地址,但是这个小工具是基于zlib这个小软件的,而且由于开源界的一些协议,所以我们需要另外自己先得到这个库

二、linux编译方法

具体细节见quazip的官方文档

1、quazip编译与配置

(1)首先安装zlib

我的环境是:manjaro deepin 17.1.12

因为Quazip是基于zlib的,所以我们需要先安装一下这个小软件

manjaro系统安装方式:
$ pacman -S zlib

ubuntu系统安装方式:
$ sudo apt-get install zlib

(2)复制头文件和动态库文件

安装完zlib后输入命令

$ whereis zlib
可以找到zlib.h头文件

$ locate libz.so
可以找到libz.so动态库文件,这里需要注意这里的库文件名字是lib开头,因为这个小软件的名字其实就是 z

将这两个文件复制出来放到quazip这项目下,可以用QTCreator打开,当然可以用下面方式编译

(3)编译

按照官方文档里面的命令编译

$ 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

2、测试

(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的外部库,然后就可以运行了

3、遇见问题和学习到的命令

(1)项目无法打开库文件

利用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 中指定的所有新目录

(2)学习到命令

$ ldd       查看某文件是不是动态链接库
$ file      识别文件类型,辨别一些文件的编码格式
$ whereis   查找文件
$ locate    查找文件
$ export    见下面

(3)ldconfig 技巧

要查看 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 中指定的库。

三、windows编译方法

1、下载zlib,利用WinRAR解压出来

在这里插入图片描述

2、利用VS来编译,进入下面终端

Linux、window下编译quazip和测试_第1张图片

3、开始编译nmake -f win32/Makefile.msc

在这里插入图片描述
在当前解压文件夹的根目录下就多了一些文件,里面有我们需要的文件
Linux、window下编译quazip和测试_第2张图片
另外有不需要的编译的方法,貌似在安装VS后,MSVC编译器会自带库
Linux、window下编译quazip和测试_第3张图片
然后处理方式和Linux上一样了

你可能感兴趣的:(linux-脚本-工具,Linux)