栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

CentOS8系统下解决Qt5.9使用SSL的“qt.network.ssl: QSslSocket: cannot resolve CRYPTO

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CentOS8系统下解决Qt5.9使用SSL的“qt.network.ssl: QSslSocket: cannot resolve CRYPTO

在CentOS8下运行Qt应用程序,提示如下错误:

qt.network.ssl: QSslSocket: cannot resolve CRYPTO_num_locks
qt.network.ssl: QSslSocket: cannot resolve CRYPTO_set_id_callback
qt.network.ssl: QSslSocket: cannot resolve CRYPTO_set_locking_callback
qt.network.ssl: QSslSocket: cannot resolve ERR_free_strings
qt.network.ssl: QSslSocket: cannot resolve EVP_CIPHER_CTX_cleanup
qt.network.ssl: QSslSocket: cannot resolve EVP_CIPHER_CTX_init
qt.network.ssl: QSslSocket: cannot resolve sk_new_null
qt.network.ssl: QSslSocket: cannot resolve sk_push
qt.network.ssl: QSslSocket: cannot resolve sk_free
qt.network.ssl: QSslSocket: cannot resolve sk_num
qt.network.ssl: QSslSocket: cannot resolve sk_pop_free
qt.network.ssl: QSslSocket: cannot resolve sk_value
qt.network.ssl: QSslSocket: cannot resolve SSL_library_init
qt.network.ssl: QSslSocket: cannot resolve SSL_load_error_strings
qt.network.ssl: QSslSocket: cannot resolve SSL_get_ex_new_index
qt.network.ssl: QSslSocket: cannot resolve SSLv23_client_method
qt.network.ssl: QSslSocket: cannot resolve SSLv23_server_method
qt.network.ssl: QSslSocket: cannot resolve X509_STORE_CTX_get_chain
qt.network.ssl: QSslSocket: cannot resolve OPENSSL_add_all_algorithms_noconf
qt.network.ssl: QSslSocket: cannot resolve OPENSSL_add_all_algorithms_conf
qt.network.ssl: QSslSocket: cannot resolve SSLeay
qt.network.ssl: QSslSocket: cannot resolve SSLeay_version
qt.network.ssl: QSslSocket: cannot call unresolved function SSLeay
qt.network.ssl: Incompatible version of OpenSSL

分析问题:是因为Qt依赖的OpenSSL和系统自带的OpenSSL1.1.1g版本不同。Qt5.9.7需要OpenSSL1.0

下载并安装openssl-1.0.2h,(安装gsoap也会用到)
  https://www.openssl.org/source/old/1.0.2/openssl-1.0.2h.tar.gz
  下载保存在: ~/Download目录下
  $ cd ~/Download
  $ tar zxvf openssl-1.0.2h.tar.gz
  $ cd openssl-1.0.2h

  $ ./config enable-shared

  $  make depend

  $ make
  $ make test
  $ sudo make install

默认安装路径是"/usr/local/ssl"

 

以下步骤参考链接:https://www.freesion.com/article/3437146790/;同样适用于CentOS8下的Qt5.9.7

 

将编译生成的四个文件考到Qt目录(/home/david/MySoft/Qt5.8.0/5.8/gcc_64/lib/)下面(这样会把系统自带的openssl也降级别,危险):

libcrypto.so libssl.so libcrypto.so.1.0.0 libssl.so.1.0.0 

应该最好在目录/home/david/MySoft/Qt5.8.0/5.8/下面新建MyQtSSL,将libcrypto.so libssl.so libcrypto.so.1.0.0 libssl.so.1.0.0 拷贝到:/home/david/MySoft/Qt5.8.0/5.8/MyQtSSL  目录下面。然后在Qtcreator 增加动态库路径(如下图):

至于为什么不拷贝到 /home/david/MySoft/Qt5.8.0/5.8/gcc_64/lib/ 下面,那是因为一般CentOS安装Qt会在 .bashrc 文件下面。
export LD_LIBRARY_PATH=${LD_LIBRARY_LIB}:/home/david/MySoft/Qt5.8.0/5.8/gcc_64/lib

这样就会影响到整个系统的PATH,系统自带的openssl功能被覆盖。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/905483.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号