您尚未登录。

楼主 # 2023-05-27 15:59:43

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,200
积分: 1140.5

交叉编译qt源码,如何指定openssl?

configure时,除了-ssl,还要选-openssl-runtime或-openssl-linked。

一开始指定了-openssl-runtime,这应该算动态加载openssl库了吧?
编译倒是顺利,然后往上找了几句想输出下qt支持的openssl版本:

    // 查詢Qt支持的版本
        bool bSupp = QSslSocket::supportsSsl();
        QString buildVersion = QSslSocket::sslLibraryBuildVersionString();
        QString version = QSslSocket::sslLibraryVersionString();
        qDebug() << bSupp << buildVersion << version;
    // 查看当前网络请求支持协议
        QNetworkAccessManager *accessManager = new QNetworkAccessManager(this);
        qDebug() << accessManager->supportedSchemes();

结果会提示找不到QSslSocket,虽然#include了,pro文件里也QT+=network了。
然后就在pro文件里用LIBS += -L XXX -lssl -lcrypto指定交叉编译后的openssl库位置。INLUCEPATH+=对应头文件。
结果还是报错:

main.cpp: In function 'int main(int, char**)':
main.cpp:12:18: error: 'QSslSocket' has not been declared
     bool bSupp = QSslSocket::supportsSsl();
                  ^~~~~~~~~~

----------------------------------

尝试用-openssl-linked方式,配置脚本里,-L openssl库路径  -I openssl库头文件路径
结果配置后make时报错:
libssl.so和libcrypto.so找不到。
-L 库路径 后如果直接加 -lssl -lcrypto,则配置脚本时就直接报错,报语法错误。
后看到往上帖子说,配置OPENSSL_LIBS变量,然后-L里加上-Wl,rpaht。

OPENSSL_LIBS='-L/home/any/MPU/AllWinner/T113-s3/Tina-Linux/out/t113-mq_r/staging_dir/target/usr/lib -lssl -lcrypto' \
./conigrua  ...
    ...
    -ssl \
    -openssl-linked \
    -I/home/any/MPU/AllWinner/T113-s3/Tina-Linux/out/t113-mq_r/staging_dir/target/usr/include \
    -L'/home/any/MPU/AllWinner/T113-s3/Tina-Linux/out/t113-mq_r/staging_dir/target/usr/lib -Wl,-rpath=home/any/MPU/AllWinner/T113-s3/Tina-Linux/out/t113-mq_r/staging_dir/target/usr/lib' \

改成这样后,最后还是报同样的错误。

最近编辑记录 Gentlepig (2023-05-27 16:40:34)

离线

楼主 #1 2023-05-27 16:41:43

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,200
积分: 1140.5

Re: 交叉编译qt源码,如何指定openssl?

晕,发现-openssl-runtime其实可能没成功:

libudev.so.1 not found

make -j4时,出现这个错误编译并没有停下,不容易察觉到。
如果是单make,就容易看到这个了。

------------------------------------------
感觉最后的-L/home/any/MPU/AllWinner/T113-s3/Tina-Linux/out/t113-mq_r/staging_dir/target/usr/lib/ \没起作用。

#!/bin/sh
export PATH=$PATH:/home/any/MPU/AllWinner/T113-s3/Tina-Linux/prebuilt/gcc/linux-x86/arm/toolchain-sunxi-musl/toolchain/bin/
export STAGING_DIR=/home/any/MPU/AllWinner/T113-s3/Tina-Linux/out/t113-mq_r/staging_dir
./configure -prefix ./t113-qt \
    -opensource \
    -confirm-license \
    -release \
    -strip \
    -shared \
    -xplatform linux-arm-gnueabi-g++ \
    -optimized-qmake \
    -c++std c++11 \
    -pch \
    -skip qt3d \
    -skip qtactiveqt \
    -skip qtandroidextras \
    -skip qtcanvas3d \
    -skip qtconnectivity \
    -skip qtdatavis3d \
    -skip qtdoc \
    -skip qtgamepad \
    -skip qtlocation \
    -skip qtmacextras \
    -skip qtnetworkauth \
    -skip qtpurchasing \
    -skip qtremoteobjects \
    -skip qtscript \
    -skip qtscxml \
    -skip qtsensors \
    -skip qtspeech \
    -skip qtsvg \
    -skip qttools \
    -skip qttranslations \
    -skip qtwayland \
    -skip qtwebengine \
    -skip qtwebview \
    -skip qtwinextras \
    -skip qtx11extras \
    -skip qtxmlpatterns \
    -make libs \
    -make examples \
    -nomake tools -nomake tests \
    -gui \
    -widgets \
    -dbus-runtime \
    --glib=no \
    --iconv=no \
    --pcre=qt \
    --zlib=qt \
    -ssl \
    -openssl-runtime \
    --freetype=qt \
    --harfbuzz=qt \
    -no-opengl \
    -linuxfb \
    --xcb=no \
    -tslib \
    --libpng=qt \
    --libjpeg=qt \
    --sqlite=qt \
    -plugin-sql-sqlite \
    -I/home/any/MPU/AllWinner/T113-s3/Tina-Linux/out/t113-mq_r/staging_dir/target/usr/include/ \
    -I/home/any/MPU/AllWinner/T113-s3/Tina-Linux/out/t113-mq_r/staging_dir/target/usr/include/allwinner/ \
    -I/home/any/MPU/AllWinner/T113-s3/Tina-Linux/out/t113-mq_r/staging_dir/target/usr/include/allwinner/include \
    -L/home/any/MPU/AllWinner/T113-s3/Tina-Linux/out/t113-mq_r/staging_dir/target/usr/lib/ \
    -recheck-all

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn