日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

arm-linux使用qt開發(fā)并加入openssl

作者:prophet23 更新時間: 2022-04-22 編程語言

想在arm的qt上運行websocket,發(fā)現(xiàn)如果沒有移植openssl的話,會報錯

QSslSocket has not been declared

于是準(zhǔn)備openssl的移植和重新編譯arm平臺的qt5.12.9

QT版本是5.12.9 qt-everywhere-src-5.12.9
ubuntu是1604x64
openssl使用openssl-1.1.1m

交叉編譯器是gcc-linaro-4.9.4-2017.01-x84_64_arm-linux-gnueabihf
arm芯片是imx6ull

1.下載openssl1.1.1m

opensssl1.1.1m下載

  1. 下載后解壓
  2. cd進(jìn)入openssl目錄
./config --prefix=/home/xxxxxx/openssl/openssl-1.1.1m/desktop-openssl shared zlib-dynamic enable-camellia
make
make install

3.編譯完成后,會在openssl-1.1.1m目錄下出現(xiàn)linux-openssl的文件夾

4.進(jìn)入QT creator 打開一個項目,左側(cè)欄點擊項目,選擇構(gòu)建套件Desktop Qt5.12.9 GCC 64bit下的Run中

在這里插入圖片描述

5.在出現(xiàn)的Environment中,下拉框選擇 Clean Environment

6.修改LD_LIBRARY_PATH 的value值

7.把剛剛編譯完成的openssl 路徑是 /home/xxxxxx/openssl/openssl-1.1.1m/desktop-openssl/lib 加入到value中,與本來存在的路徑,用 : 分隔開

在這里插入圖片描述
8.然后把下拉框重新點回 System Environment

9.返回項目文件,點擊重新構(gòu)建,然后左下角運行,發(fā)現(xiàn)websocket能正常運行起來,也沒有報錯了

10.打印下openssl是否已經(jīng)支持

qDebug()<<"QSslSocket="<

在這里插入圖片描述
ok,ubuntu上已經(jīng)可以正常運行帶openssl的qt程序了


2.重新編譯arm-linux 的qt

1.首先編譯arm版本的openssl
2.進(jìn)入openssl-1.1.1m目錄,輸入指令

./Configure linux-generic32 no-asm shared no-async --prefix=/home/xxxxx/openssl/openssl-1.1.1m/openssl-arm CROSS_COMPILE=/home/xxxxx/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- CC=gcc

make
make install

3.運行完成后,prefix指定的目錄就是arm版的openssl

4.測試一下是否可以在arm芯片上運行
5.把編譯出來的目錄復(fù)制到根文件系統(tǒng),比如把目錄里的文件全部放在usr/lib/openssl下

6.修改 etc/profix文件,加入環(huán)境變量

export LD_LIBRARY_PATH=/opt/openssl/lib:$LD_LIBRARY_PATH

7.修改完成后保存退出,然后刷新環(huán)境變量

source etc/profile
env

8.查看環(huán)境變量是否已經(jīng)加入

9.然后進(jìn)入移植過來的openssl的bin目錄下,并運行測試代碼

cd usr/lib/openssl/bin
./openssl speed rsa2048

在這里插入圖片描述
10.可以成功運行,說明openssl移植到arm上成功

11.然后需要編譯arm版的帶openssl的qt,進(jìn)入qt-everywhere-src-5.12.9

12.修改autoconfigure.sh文件

 1 #!/bin/sh
  2 
  3 OPENSSL_LIBS='-L/home/prophet/openssl/openssl-1.1.1m/openssl-arm/lib -lssl -lcrypto' \
  4 ./configure -prefix /home/prophet/qt_file/qt-everywhere-src-5.12.9/arm-qt-openssl \
  5 -openssl-linked \
  6 -I/home/prophet/openssl/openssl-1.1.1m/openssl-arm/include \
  7 -L'/home/prophet/openssl/openssl-1.1.1m/openssl-arm/lib -Wl,-rpath=/home/prophet/openssl/openssl-1.1.1m/openssl-a    rm/lib' \
  8 -opensource \
  9 -confirm-license \
 10 -release \
 11 -strip \
 12 -shared \
 13 -xplatform linux-arm-gnueabi-g++ \
 14 -optimized-qmake \
 15 -c++std c++11 \
 16 --rpath=no \
 17 -pch \
 18 -skip qt3d \
 19 -skip qtactiveqt \
 20 -skip qtandroidextras \
 21 -skip qtcanvas3d \
 22 -skip qtconnectivity \
23 -skip qtdatavis3d \
 24 -skip qtdoc \
 25 -skip qtgamepad \
 26 -skip qtlocation \
 27 -skip qtmacextras \
 28 -skip qtnetworkauth \
 29 -skip qtpurchasing \
 30 -skip qtremoteobjects \
 31 -skip qtscript \
 32 -skip qtscxml \
 33 -skip qtsensors \
 34 -skip qtspeech \
 35 -skip qtsvg \
 36 -skip qttools \
 37 -skip qttranslations \
 38 -skip qtwayland \
 39 -skip qtwebengine \
 40 -skip qtwebview \
 41 -skip qtwinextras \
 42 -skip qtx11extras \
 43 -skip qtxmlpatterns \
 44 -make libs \
 45 -make examples \
 46 -nomake tools -nomake tests \
 47 -gui \
 48 -widgets \
 49 -dbus-runtime \
 50 --glib=no \
 51 --iconv=no \
52 --pcre=qt \
 53 --zlib=qt \
 54 --freetype=qt \
 55 --harfbuzz=qt \
 56 -no-opengl \
 57 -linuxfb \
 58 --xcb=no \
 59 -tslib \
 60 --libpng=qt \
 61 --libjpeg=qt \
 62 --sqlite=qt \
 63 -plugin-sql-sqlite \
 64 -I/home/prophet/qt_file/tslib/arm-tslib/include \
 65 -L/home/prophet/qt_file/tslib/arm-tslib/lib \
 66 -recheck-all

13.保存退出后,運行autoconfigure.sh
14.根據(jù)打印的信息可以看到openssl是yes了
在這里插入圖片描述
15.然后開始編譯

make -j4
make install

16.運行完成后 在-prefix指定的地方,出現(xiàn)編譯好的arm-linux的qt的文件夾

把這個文件夾,放在根文件系統(tǒng)的usr/lib中

17.然后修改 etc/profile 文件
18.把之前QT_ROOT 的指向,修改成新編譯的帶openssl的armqt文件夾

在這里插入圖片描述
19.保存后重新執(zhí)行下profile文件
source etc/profile
env

20.回到QT creator 加入新的kits

21.在Qt version下,加入新編譯的帶openssl版本的qt
在這里插入圖片描述
22.然后再kits下,加入新的kits,只是改變了Qt version
在這里插入圖片描述
23.新增完成后,把項目用新的構(gòu)建套件重新構(gòu)建
在這里插入圖片描述
24.發(fā)現(xiàn)還是存在報錯
在這里插入圖片描述

25.找不到libssl.so和libcrypto.so

26.在項目的pro文件,加入一行,也就是arm版本的openssl

LIBS  += -L/home/prophet/openssl/openssl-1.1.1m/openssl-arm/lib/ -lcrypto -lssl

在這里插入圖片描述

27.再次構(gòu)建項目,發(fā)現(xiàn)沒有任何報錯了,編譯后,把應(yīng)用程序發(fā)到根文件系統(tǒng)上
28.運行應(yīng)用程序
29.websocket也可以正常運行了

30.打印的openssl支持,也是true
在這里插入圖片描述


在ubuntu上qt creator 如果要在desktop上構(gòu)建調(diào)試的話,需要把pro文件中加入的那行代碼注釋掉 否則會報錯

//LIBS  += -L/home/prophet/openssl/openssl-1.1.1m/openssl-arm/lib/ -lcrypto -lssl

原文鏈接:https://blog.csdn.net/prophet23/article/details/122454238