解决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

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

原文地址:https://www.cnblogs.com/wgwyanfs/p/7214381.html