1. 程式人生 > >編譯Curl支援https

編譯Curl支援https

參考:
 http://blog.csdn.net/liang19890820/article/details/51658574
http://www.cnblogs.com/openiris/p/3812443.html

目的:編譯libcurl支援https。
說明:
1.編譯libcurl不僅需要curl包也需要ssl庫的支援,所以在編譯libcurl的庫之前先編譯openssl庫。
2.我其實就是個搬運工,以及合成,把兩個博主的方法結合運用了一下


注意:openssl庫如果是編譯成靜態庫和編譯成動態庫時,編譯curl庫時使用的命令稍微有點區別,需要配置ssl庫的引數,如果是動態庫使用dll,如果是靜態庫使用static。
環境:
1.需要有VS(版本多少都可以,只是編譯命令中VCXX稍微有些不同,VS2010是VC10,VS2015是VC14).
2.ActivePerl
下載地址:http://www.activestate.com/activeperl/downloads 
我下載的是:ActivePerl-5.26.0.2600-MSWin32-x64-403866.exe
注意:Windows系統版本
3. 下載並安裝 Nasm 彙編器,並將 D:\Program Files\NASM 新增到系統環境變數 Path 中。 
下載地址:http://www.nasm.us/ 
我下載的是:nasm-2.13.01-installer-x64.exe
注意:Windows系統版本
環境變數設定參考:
怎麼設定環境變數_百度經驗  https://jingyan.baidu.com/article/6079ad0e6fabf028ff86db3a.html
安裝包下載:
OpenSSL的下載地址:
http://www.openssl.org/ 
我下載的是:openssl-1.0.2m.tar.gz
curl的下載地址:
https://curl.haxx.se/download/
我下載的是:
https://curl.haxx.se/download/curl-7.30.0.tar.gz
注意:其中所有的檔案放置位置都可以自行修改。


編譯步驟
1.把openssl和curl包都解壓到F盤
2.先編譯openssl開啟命令提示符,定位至 F:\openssl-1.0.2m
3.輸入 perl Configure VC-WIN32 --prefix=c:\openssl_lib(將其安裝到 C:\ openssl_lib)
4.在當前目錄下輸入 ms\do_nasm
5.在自己電腦上找到VS快捷鍵,右鍵單擊檢視屬性,將屬性目標中的VS路徑複製出來,去掉Common7\IDE\devenv.exe然後在後面加上VC\bin,將命令提示符定位至 F:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin, 然後輸入vcvars32.bat:
注意:
如果沒有這一步,會提示 nmake 不是內部或外部命令等一系列錯誤。
如果以後再次編譯使用nmake命令時,也可以先執行這一步。
6.再次將命令提示符定位至 F:\openssl-1.0.2m,
如果要編譯成動態庫輸入  nmake -f ms\ntdll.mak
如果要編譯成靜態庫輸入nmake -f ms\nt.mak
本次編譯成靜態連結庫,所以輸入nmake -f ms\nt.mak
7.安裝到配置目錄 如果是靜態庫 輸入nmake -f ms\nt.mak install ,
動態庫輸入 nmake -f ms\ntdll.mak install
8.這樣openssl就編譯完成
9.開始編譯curl,進入到F:\curl-7.37.0\進入winbuild目錄,如果想看一下編譯命令,通過 nmake /f Makefile.vc 檢視幫助
10. 如果openssl是靜態庫 執行 nmake /f Makefile.vc mode=dll VC=10 WITH_DEVEL=C:\openssl_lib WITH_SSL=static ENABLE_SSPI=no ENABLE_IPV6=no
如果openssl是動態庫 執行 nmake /f Makefile.vc mode=dll VC=10 WITH_DEVEL=C:\openssl_lib WITH_SSL=dll ENABLE_SSPI=no ENABLE_IPV6=no
  命令註釋
 mode=dll 編譯libcurl位動態連結庫,如果static 就是把libcurl編譯位靜態庫 
VC=10 代表使用的是VC2010
WITH_DEVEL=C:\openssl_lib 表示用到第三方開發包的目錄,本例上面已經將openssl編譯好的開發包,安裝到此目錄
WITH_SSL=static ,代表使用libssl庫 是靜態庫,如果是動態庫使用dll
 ENABLE_SSPI=no ENABLE_IPV6=no(禁用SSPI,ipV6功能)
稍等片刻就編譯成功了。
10.測試剛剛編譯出來的庫是否支援https
如果是使用的openssl靜態庫直接進行下面的測試,定位到F:\curl-7.37.0\builds\libcurl-vc10-x86-release-dll-ssl-static-spnego\bin
然後輸入命令:curl.exe https://mail.qq.com  -k
如果使用的是openssl動態庫需要把libeay32.dll和ssleay32.dll都拷貝到curl.exe同級資料夾下。
定位到F:\curl-7.37.0\builds\libcurl-vc10-x86-release-dll-ssl-dll-spnego\bin
然後輸入命令:curl.exe https://mail.qq.com  -k


如果不支援會出現不支援https的提示。
支援則是下面的現象: