即使安装了libssl,Qt也找不到它

即使安装了libssl,Qt也找不到它,qt,ssl,openssl,Qt,Ssl,Openssl,花了几个小时试图解决这个问题。我的Qt程序依赖于https连接,但在中无法在Arch上启动(在Debian和Ubuntu上运行良好) 我将/usr/lib添加到LD_LIBRARY_PATHLD_LIBRARY_PATH=home/michal/Qt/5.10.0/gcc_64/lib:/home/michal/Qt/5.10.0/gcc_64/lib:/usr/lib 程序输出 qt.network.ssl: QSslSocket: cannot call unresolved functio

花了几个小时试图解决这个问题。我的Qt程序依赖于https连接,但在中无法在Arch上启动(在Debian和Ubuntu上运行良好)

我将/usr/lib添加到LD_LIBRARY_PATH
LD_LIBRARY_PATH=home/michal/Qt/5.10.0/gcc_64/lib:/home/michal/Qt/5.10.0/gcc_64/lib:/usr/lib

程序输出

qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_CTX_new
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_library_init
qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error
qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error
ls/usr/lib/libssl*

lrwxrwxrwx 1 root root     13  2. lis 17.20 /usr/lib/libssl.so -> libssl.so.1.1
-r-xr-xr-x 1 root root 502024 25. kvě 18.54 /usr/lib/libssl.so.1.0.0
-rwxr-xr-x 1 root root 434176  2. lis 17.21 /usr/lib/libssl.so.1.1
-rwxr-xr-x 1 root root 359736  5. říj 22.49 /usr/lib/libssl3.so
lrwxrwxrwx 1 root root      16  2. lis 17.20 /usr/lib/libcrypto.so -> libcrypto.so.1.1
-r-xr-xr-x 1 root root 2842880 25. kvě 18.54 /usr/lib/libcrypto.so.1.0.0
-rwxr-xr-x 1 root root 2594952  2. lis 17.21 /usr/lib/libcrypto.so.1.1
ls-l/usr/lib/libcrypto*

lrwxrwxrwx 1 root root     13  2. lis 17.20 /usr/lib/libssl.so -> libssl.so.1.1
-r-xr-xr-x 1 root root 502024 25. kvě 18.54 /usr/lib/libssl.so.1.0.0
-rwxr-xr-x 1 root root 434176  2. lis 17.21 /usr/lib/libssl.so.1.1
-rwxr-xr-x 1 root root 359736  5. říj 22.49 /usr/lib/libssl3.so
lrwxrwxrwx 1 root root      16  2. lis 17.20 /usr/lib/libcrypto.so -> libcrypto.so.1.1
-r-xr-xr-x 1 root root 2842880 25. kvě 18.54 /usr/lib/libcrypto.so.1.0.0
-rwxr-xr-x 1 root root 2594952  2. lis 17.21 /usr/lib/libcrypto.so.1.1
带有测试代码

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    qDebug()<<"SSL version use for build: "<<QSslSocket::sslLibraryBuildVersionString();
    qDebug()<<"SSL version use for run-time: "<<QSslSocket::sslLibraryVersionNumber();
    qDebug()<<QCoreApplication::libraryPaths();

    return 0;
}

我需要重新安装Ubuntu并安装openssl 1.0.x版本,而不是1.1.x版本。除此之外,如果需要,您还可以在构建项目之前运行导出LD_LIBRARY_PATH=/PATH/openssl/lib。

我在ubuntu 16.04和Qt 5.10.1上也遇到了同样的问题。我刚刚在我的机器上编译了Qt并安装了它,这解决了ssl问题,甚至开始使用Opnessl1.1.0。我已经配置了没有-openssl链接标志的Qt。
考虑到编译可能需要相当长的时间,在我将Ubuntu 16.x升级到18.04之后,我遇到了同样的问题。原因似乎是新Ubuntu上的默认libssl版本是1.1.0,而迄今为止Qt的预构建二进制文件都是1.0.0(有关此问题的详细信息,请参阅)

我的解决方法如下

  • 更改到Qt可执行文件的目录

  • 创建到libssl版本1.0.0的符号链接

    ln -s /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 libssl.so
    
  • 确保您的LD_LIBRARY_路径包含1)中的目录


  • 现在启动您的Qt可执行文件将选择正确的libssl版本。

    我在您的库路径列表中没有看到/usr/lib。我也没有看到,LD_library_PATH=/home/michal/Qt/5.10.0/gcc_64/lib:/home/michal/Qt/5.10.0/gcc_64/lib:/usr/libTry调用
    QCoreApplication::addLibraryPath(/usr/lib”)紧接着
    QApplication a(argc,argv)(“/usr/lib”、“/home/michal/Qt/5.10.0/gcc_64/plugins”、“/home/michal/Programming/build-Factbook-Clone_5_10_0_gcc_64bit4-Vydu00e1nu00ed”)
    也许你需要的不仅仅是
    libssl
    。如果我没记错的话,
    libcrypto
    可能也需要。