• 解决Linux下Qt程序报『QString::arg: Argument missing: 无法解析SSLv2_client_method中的符号』错误


    解决Linux下Qt程序报『QString::arg: Argument missing: 无法解析SSLv2_client_method中的符号』错误

    在Linux开发Qt应用,程序会报这种错误:

    QString::arg:Argument missing: 无法解析SSLv2_client_method中的符号“SSLv2_client_method”:ssl,(/lib/x86_64-linux-gnu/libssl.so.1.0.0: undefined symbol: SSLv2_client_method)

    QString::arg:Argument missing: 无法解析SSLv2_client_method中的符号“SSLv2_client_method”:crypto,(/lib/x86_64-linux-gnu/libcrypto.so.1.0.0: undefined symbol:SSLv2_client_method)

    qt.network.ssl:QSslSocket: cannot resolve SSLv2_client_method

    QString::arg:Argument missing: 无法解析SSLv2_server_method中的符号“SSLv2_server_method”:ssl,(/lib/x86_64-linux-gnu/libssl.so.1.0.0: undefined symbol: SSLv2_server_method)

    QString::arg:Argument missing: 无法解析SSLv2_server_method中的符号“SSLv2_server_method”:crypto, (/lib/x86_64-linux-gnu/libcrypto.so.1.0.0:undefined symbol: SSLv2_server_method)

    qt.network.ssl:QSslSocket: cannot resolve SSLv2_server_method

    QString::arg:Argument missing: 无法解析res_nclose中的符号“res_nclose”:libresolv.so.2,(/lib/x86_64-linux-gnu/libresolv.so.2: undefined symbol: res_nclose)

    这是在使用QString::arg( )函数的时候报的错误,查看了相关的帖子和资料。查到是Ubuntu这个操作系统带的OpenSSL库中,没有编译SSLv2这一类函数,预计是安全方面原因吧。

    了解了问题的所在,我们来寻找一下解决方法。由于我们也无意改动Ubuntu的核心OpenSSL库,可是希望不报这种错误,因此我们在构建OpenSSL的同一时候,不将其放在/usr/lib上,而是放在Qt的lib文件夹下,这样可以避免出现这种错误。

    以下是详细的解决方法,不用操心,非常快就行解决。


    1、从网络上下载OpenSSL库的源码。地址是:

    http://openssl.org


    我们下载最新的OpenSSL 1.0.2b。

    2、Ctrl +Alt + T,打开终端,定位下载的OpenSSL位置。我这里的命令是:

    cd~/Develop/openssl-1.0.2b

    3、配置一下OpenSSL,让它产生动态链接库:

    ./configenable-shared

    4、运行构建

    make

    5、将产生的.so文件和它的链接拷贝到相应的QtSDK/lib目录中,详细来说是这几个文件:

    libcrypto.so

    libcrypto.so.1.0.0

    libssl.so

    libssl.so.1.0.0

    这里我放在的位置是:

    ~/Develop/Qt5.5.0Beta/5.5/gcc_64/lib

    再执行相关程序,遇到了QString::args( )函数的时候,就不报这些错误了。

    上面紫色底纹的文字。是我临时没有办法解决的。原因是Linux核心库glibc当中的libresolv.so.2文件里缺少res_nclose这种函数符号。

    可能也是Ubuntu团队的原因没有编译这个函数符号,解决方法是在Linux的全部发行版的glibc库中寻找到libresolv.so.2这个动态链接库,然后相同放在类似

    ~/Develop/Qt5.5.0Beta/5.5/gcc_64/lib

    这种文件夹,可是截止我写博客的时候,我仍然没有找到合适的动态链接库。

  • 相关阅读:
    yaml简单模板
    goland之基础使用 X
    redis之性能优化 X
    定时任务管理之qinglong X
    golang数据库操作之gorm X
    低代码平台汇总 X
    kafka之介绍 X
    ClickHouse之基础 X
    gitlab安装与基本使用 X
    ClickHouse之物化MySQL X
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/7214381.html
Copyright © 2020-2023  润新知