如下为Linux下的操作
一。下载需要用到的第三方库的源码,如libcurl ,并用tar命令解压
二。创建一个文件用于保存库文件,如/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