Bash Qt应用程序如何确定它使用的openssl库?

Bash Qt应用程序如何确定它使用的openssl库?,bash,openssl,qt5,ubuntu-16.04,Bash,Openssl,Qt5,Ubuntu 16.04,我在Ubuntu 16.04上,运行Qt5.3.0-rc,在/usr/bin中安装了OpenSsl 1.0.2g。 我下载了最新的OpenSsl 1.1.1c源代码,构建并安装在/usr/local/bin中 哪个openssl返回/usr/local/bin 但是,当我启动Qt应用程序(从同一个终端窗口)时,它似乎仍然返回1.0.2g的密码列表 运行strace./quicksecureclient 2>&1|grep'^open(.*\.so'|grep-i ssl时,似乎没有加载ssl库

我在Ubuntu 16.04上,运行Qt5.3.0-rc,在/usr/bin中安装了OpenSsl 1.0.2g。 我下载了最新的OpenSsl 1.1.1c源代码,构建并安装在/usr/local/bin中

哪个openssl
返回/usr/local/bin

但是,当我启动Qt应用程序(从同一个终端窗口)时,它似乎仍然返回1.0.2g的密码列表

运行
strace./quicksecureclient 2>&1|grep'^open(.*\.so'|grep-i ssl
时,似乎没有加载ssl库

所以我想我的第一个问题是:“Qt应用程序如何确定它使用的是哪个openssl库?”

以下Qt程序仅列出4个PSK密码(相同的密码由
/usr/bin/openssl密码返回-v'ALL:eNULL'| grep PSK
),而1.1.1 openssl返回60项

#include <QCoreApplication>

#include <QSslCipher>
#include <QSslConfiguration>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    auto configuration = QSslConfiguration::defaultDtlsConfiguration();
    QList<QSslCipher> all_ciphers;
    all_ciphers = configuration.supportedCiphers();
    for(int i=0;i<all_ciphers.length();i++){
        if(all_ciphers[i].name().contains("PSK"))
                qDebug() << "Cipher " << all_ciphers[i].name();
    }
    qDebug() << "Ciphers: " << all_ciphers.length();
    return a.exec();
}
#包括
#包括
#包括
#包括
int main(int argc,char*argv[])
{
qcorea应用程序(argc、argv);
自动配置=QSslConfiguration::defaultDtlsConfiguration();
QList所有的密码;
all_ciphers=configuration.supportedCiphers();

对于(int i=0;iTry
ldd./quicksecureclient
首先。请注意,openssl-1.0.n和openssl-1.1.1不兼容,它们的共享lib有不同的主要版本号。
ldd quicksecureclient
也不显示SSL库。它显示libQt5Coap.so.5和libQt5Network.so.5。我添加了一个简单的示例来说明这个问题嗯。我不知道如何配置Qt以首先使用特定的OpenSsl版本控制
ldd./QuickSecurClient
。请注意,OpenSsl-1.0.n和OpenSsl-1.1.1不兼容,它们的共享库有不同的主版本号。
ldd QuickSecurClient
也不显示SSL库。它确实显示了libQt5Coap.so.5和libQt5Netw我添加了一个简单的例子来说明这个问题。我不知道如何配置Qt来使用特定的OpenSsl版本