項(xiàng)目背景:
? ? ? ?在項(xiàng)目開發(fā)過程中,因涉及到網(wǎng)絡(luò)數(shù)據(jù)通訊,故用到了curl+openssl。在官網(wǎng)上下載了curl和openssl后分別進(jìn)行了編譯,編譯完成后經(jīng)測試無異常,但隨著項(xiàng)目的發(fā)布,用戶量激增,出現(xiàn)了https通信失敗的問題,問題現(xiàn)象為:在多數(shù)電腦上使用http或者h(yuǎn)ttps進(jìn)行通信均無異常,但在個(gè)別電腦上http通信無異常但https通訊失??;根據(jù)問題現(xiàn)象,初步判定是curl編譯時(shí)未配置支持openssl導(dǎo)致的,故重新進(jìn)行了編譯,編譯curl時(shí)實(shí)現(xiàn)了對openssl的支持(編譯指令/參數(shù)為:WITH_SSL=<dll/static>);完成編譯后重新進(jìn)行了測試,https通信失敗的問題得到了解決;
編譯過程:
? ? ? 1、在官網(wǎng)(https://curl.se/download.html)下載curl,如下圖所示:
? ? ? ?2、在官網(wǎng)(/index.html)下載openssl,如下圖所示:
? ? ? 3、?在官網(wǎng)(Strawberry Perl for Windows)下載Perl,下載這個(gè)工具需要很長時(shí)間,這會兒可以閱讀下openssl中的INSTALL.md和README.md文件。下載了很久,最終還是失敗了,迫于無奈使用"魔戒"進(jìn)行下載,果然速度提上來了,僅幾秒鐘就下載完了;如下圖所示:
? ? ?4、?在官網(wǎng)(Index of /pub/nasm/releasebuilds/2.16.01/win64)下載nasm,如下圖所示:
?
? ? ?5、解壓下載的壓縮包openssl-3.2.0.tar.gz、curl-8.5.0.zip,并安裝PerL和nasm,這個(gè)比較簡單就是運(yùn)行起來點(diǎn)擊下一步就行,安裝完成后Perl會自動添加到環(huán)境變量中,而nasm則需要手動添加至環(huán)境變量中,如下圖所示:
? ? ?6、如果電腦上沒有VS的話,下載、安裝VS進(jìn)行編譯要簡單些,本機(jī)中已安裝了VS2013;
? ? ?7、這時(shí)候就可以開始Openssl的編譯了;
? ? ? ? ? ①以管理員身份打開“VS2013 x64 本機(jī)工具命令提示”;
? ? ? ? ? ②cd到openssl目錄下;例如:cd C:\Users\yjk\Downloads\openssl-3.2.0
? ? ? ? ? ③使用Perl配置OpenSSL; 例如:perl Configure VC-WIN64A --prefix=D:\CURL\openssl_lib
? ? ? ? ? ④輸入“nmake”命令開始編譯;
? ? ? ? ? ⑤編譯過程中報(bào)錯:無法解析的外部符號 snprintf,該符號在函數(shù) http_server_init 中 被引? ? 用;
? ? ? ? ? ⑥重新下載了openssl-1.1.1v版本的openssl,重新進(jìn)行編譯,未報(bào)錯;
? ? ? ? ? ⑦輸入"nmake test"指令進(jìn)行測試,測試通過;
? ? ? ? ? ⑧輸入"nmake install"指令進(jìn)行安裝,安裝完成;
? ? ? ? ? ⑨進(jìn)入到輸出目錄“cd /d D:\CURL\openssl_lib\bin”,輸入指令查看版本號 "openssl? ? ? ? ? ? ? ? version",自此openssl編譯結(jié)束;
? ? ? ? ? ⑩openssl編譯完成后,"VS2013 x64 本機(jī)工具命令提示"窗口不要關(guān)閉,繼續(xù)編譯curl;
? ? ?8、完成了openssl編譯后開始編譯crul
? ? ? ? ? ?①cd到curl目錄下;例如:cd /d C:\Users\yjk\Downloads\curl-8.5.0\winbuild;
? ? ? ? ? ?②輸入指令:”nmake /f Makefile.vc mode=dll VC=12 WITH_DEVEL=D:\CURL\openssl_lib WITH_SLL=dll“,開始編譯,這個(gè)編譯很快不到一分鐘就編譯完成了;
? ? ? ? ? ?③編譯完成后自動輸出到"C:\Users\yjk\Downloads\curl-8.5.0\builds\libcurl-vc12-x64-release-dll-ipv6-sspi-schannel"文件夾中;
? ? ? ? ? ?④注意事項(xiàng):關(guān)于curl編譯流程和編譯指令的介紹在winbuild文件夾下的"README.md"文檔中,文檔介紹的很詳細(xì);“VC=12”指令參數(shù)可以在網(wǎng)上查相應(yīng)的VS和VC的對照表;
? ? ?9、至此curl+openssl編譯完成,可將編譯好的opessl庫文件拷貝至curl編譯輸出目錄進(jìn)行測試,輸入指令"curl.exe https://www.baidu.com --insecure"測試是否支持https;如圖所示:文章來源:http://www.zghlxwxcb.cn/news/detail-764964.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-764964.html
到了這里,關(guān)于Windows下編譯curl+openssl的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!