首页 > 技术文章 > Qt添加第三方库

IamLoser 2018-09-18 14:08 原文

如下为Linux下的操作

一。下载需要用到的第三方库的源码,如libcurl ,并用tar命令解压

  http://curl.haxx.se/download.html

二。创建一个文件用于保存库文件,如/curl_lib

三。进入解压后的libcurl目录,执行  ./configure --prefix=/curl_lib --enable-static --enable-shared

  其中,/curl_lib为之前创建的保存文件, --enable-static --enable-shared 分别表示生成静态库与动态库

四。执行make命令

五。执行make install 命令

六。在/curl_lib目录下生成include(头文件)与lib(库文件)的目录

七。Qt上导入第三方库应用

  (1)在Qt .pro文件中添加上述步骤所产生的include文件路径

    /home/workspace/Qt/Qt2/test/curl_lib/include

  (2)在Qt .pro文件中添加上述步骤所产生的lib文件路径

    /home/workspace/Qt/Qt2/test/curl_lib/lib

  (3)如此,就可以在Qt中调用curl的库了

八。Qt上导入第三方库libwebsockets

  (1)安装cmake(经验:安装较老的版本没那么多意想不到的问题,此处安装cmake-3.2.0-rc1.tar.gz)

    安装方法:A)下载并解压源码

         B)cd到文件目录 ,执行./bootstrap

         C)make && make install

  (2)安装openssl(经验:安装较老的版本没那么多意想不到的问题,此处安装openssl-1.0.0a)

    安装方法:A)下载并解压源码

         B)cd到文件目录,执行./config  shared --prefix=/usr/local/ssl_arm

            make && make install(prefix 是安装目录,shared 作用是生成动态连接库

           (在配置前加入CC=arm-none-linux-gnueabi-gcc 可以指定编译器 , CC=arm-none-linux-gnueabi-gcc ./config no-asm shared --prefix=/usr/local/ssl_arm)

         C)如果程序在PC(x86)上运行,不需要指定CC,因为默认为gcc

     (3)安装zlib

        A) export CC=arm-none-linux-gnueabi-gcc   //如果编译器路径已经添加到PATH可以省略,经验最好都加上此句

             B)./configure --prefix=/usr/local/zlib_arm      //最后生成的库、头文件都在xxx目录下
             C)  make && make install

        D) 如果程序在PC(x86)上运行,export CC=gcc


  (4)下载libwebsockets库并解压(经验:下载最新的版本没那么多意想不到的问题,此处下载libwebsockets-3.0-stable.zip)

  (5)cd进入文件目录,mkdir build目录

  (6)cd build ,  cmake ..  -DLWS_OPENSSL_INCLUDE_DIRS=/usr/local/ssl_arm/include/  -DLWS_OPENSSL_LIBRARIES="/usr/local/ssl_arm/lib/libssl.so;/usr/ssl_arm/lib/libcrypto.so"

    更多的配置(根据需要选择编译器与lib、include文件路径):

              cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/libwebsocket_arm \
                    -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_C_COMPILER=arm-none-linux-gnueabi-gcc  \
                    -DCMAKE_CXX_COMPILER=arm-none-linux-gnueabi-g++  \
                    -DZLIB_INCLUDE_DIR=/usr/local/zlib_arm/include \
                    -DZLIB_LIBRARY="/usr/local/zlib_arm/lib/libz.a"  \
                    -DLWS_OPENSSL_INCLUDE_DIRS=/usr/local/ssl_arm/include/\      
             -DLWS_OPENSSL_LIBRARIES="/usr/local/ssl_arm/lib/libssl.so;/usr/local/ssl_arm/lib/libcrypto.so"

          注:libz.a 原为lib.so,报错,改为libz.a就正确了

            include/ 下还有一级目录openssl,不能放到此路径中,会报错

  (7)make && make install

  (8)编译好后,libwebsockets的头文件在 libwebsocket_arm/include,库文件在libwebsocket_arm/lib

  (9)根据第七点,修改Qt .pro文件即可(此处需要注意导入的路径,根据程序在板子上跑还是PC上跑填入不同路径

    下面##pc  下  ssl_pc 、libwebsocket_pc 、libqrencode_pc 都是用gcc编译出来的文件,用于在PC上调试程序 , ##ARM 下的是用 arm-none-linux-gnueabi-gcc 编译出来的文件,在板子上跑

    

 

九。QT上移植libqrencode

  (1)从http://fukuchi.org/works/qrencode/ 下载libqrencode(qrencode-3.4.4.tar.gz)

    并用tar命令解包

  (2)./configure --prefix=/homel/libqrencode-arm --host=arm-none-linux-gnueabi --without-tools 

    此处--prefix  指定库文件的路径,--host指定编译器(根据程序是在PC还是在开发板上跑选择不同的编译器) --without-tools (不需要zlib、libpng库)

  (3)make && make install

 

十。补充

  当程序是在开发板上运行时,按照上述编译各种库后,还需要把编译成的库放在QT的目录下

        

 

 

以上,

2018-9-18

推荐阅读