解決Linux下Qt程式報『QString::arg: Argument missing: 無法解析SSLv2_client_method中的符號』錯誤,sslprotocolsslv2

來源:互聯網
上載者:User

解決Linux下Qt程式報『QString::arg: Argument missing: 無法解析SSLv2_client_method中的符號』錯誤,sslprotocolsslv2

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

這樣的目錄,但是截止我寫部落格的時候,我仍然沒有找到合適的動態連結程式庫。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.