如下為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