Solve the "QString: arg: Argument missing: Unable to parse the symbol in SSLv2_client_method" error reported by the Qt program in Linux, sslprotocolsslv2
In Linux, the Qt Program Reports "QString: arg: Argument missing: Unable to parse the symbol in SSLv2_client_method ".
If you develop a Qt application in Linux, the program reports the following error:
QString: arg: Argument missing: Unable to parse the symbol "SSLv2_client_method" in SSLv2_client_method: ssl, (/lib/x86_64-linux-gnu/libssl. so.1.0.0: undefined symbol: SSLv2_client_method)
QString: arg: Argument missing: Unable to parse the symbol "SSLv2_client_method": crypto, (/lib/x86_64-linux-gnu/libcrypto. so.1.0.0: undefined symbol: SSLv2_client_method) in sslv2_method)
Qt. network. ssl: QSslSocket: cannot resolve SSLv2_client_method
QString: arg: Argument missing: Unable to parse the symbol "SSLv2_server_method" in SSLv2_server_method: ssl, (/lib/x86_64-linux-gnu/libssl. so.1.0.0: undefined symbol: SSLv2_server_method)
QString: arg: Argument missing: Unable to parse the symbol "SSLv2_server_method": crypto, (/lib/x86_64-linux-gnu/libcrypto. so.1.0.0: undefined symbol: SSLv2_server_method) in SSLv2_server_method)
Qt. network. ssl: QSslSocket: cannot resolve SSLv2_server_method
QString: arg: Argument missing: Unable to parse the symbol "res_nclose": libresolv. so.2 in res_nclose, (/lib/x86_64-linux-gnu/libresolv. so.2: undefined symbol: res_nclose)
This error was reported when the QString: arg () function was used. After checking the related posts and materials, we found the OpenSSL library in the Ubuntu operating system, SSLv2 is not compiled. It is probably because of security.
After learning about the problem, let's look for a solution. Because we do not intend to modify the core OpenSSL library of Ubuntu, but do not want to report such an error, we will not put it on/usr/lib while building OpenSSL, put it in the lib directory of Qt to avoid such errors. The following is a specific solution. You don't have to worry about it and will be able to solve it soon.
1. Download the source code of the OpenSSL library from the network. The address is:
Http://openssl.org
Download the latest OpenSSL 1.0.2b.
2. Press Ctrl + Alt + T to open the terminal and locate the OpenSSL download location. The command here is:
Cd ~ /Develop/openssl-1.0.2b
3. Configure OpenSSL to generate a Dynamic Link Library:
./Configenable-shared
4. Execute build
Make
5. Copy the generated. so file and its link to the corresponding QtSDK/lib folder. Specifically, these files:
Libcrypto. so
Libcrypto. so.1.0.0
Libssl. so
Libssl. so.1.0.0
Here I put it in the following position:
~ /Develop/Qt5.5.0Beta/5.5/gcc_64/lib
When you run the related program and encounter the QString: args () function, these errors are not reported.
The above purple-striped text cannot be solved for the time being, because the function symbols such as res_nclose are missing in the libresolv. so.2 file of Linux core library glibc. This may also be the reason why the Ubuntu team did not compile this function symbol. The solution is to find the dynamic link library libresolv. so.2 In the glibc library of all Linux releases, and then put it in a similar
~ /Develop/Qt5.5.0Beta/5.5/gcc_64/lib
Such a directory, but as of my blog writing, I still did not find a suitable dynamic link library.