本文參考http://blog.csdn.net/fragmentalice/article/details/39430293
特此感謝。
公司項目中用到幾個http get請求,用的libcurl開源庫。
當新需求接入第三方接口的時候,需要改成支持https,發現以前的libcurl庫並不支持。
所以要重新編譯一個。
具體編譯環境如下:
硬件:
CPU:Intel Core(TM) i3-3250 CPU @ 3.00GHz
RAM:4GB (3.41GB可用)
GPU:板載集成顯卡
軟件:
Windows 7 SP1 32 bits
Visual Studio 2010
而libcurl發送https請求,依賴於OpenSSL和zlib。
所以先編譯這兩個。過程如下:
1. 首先編譯OpenSSL。
a. 使用工具ActivePerl
http://www.activestate.com/activeperl/downloads
根據自己的電腦環境 選擇 Version 5.22.0.2200 Windows x86平台
ActivePerl-5.22.0.2200-MSWin32-x86-64int-299195.msi 直接安裝,默認配置,下一步即可。
注意安裝目錄是C:\Perl\
安裝完成后,DOS命令行中並沒有perl命令。因為環境變量並未立刻生效,需要注銷登錄。或者:
找到perl.exe,發現在C:\Perl\bin\perl.exe
在環境變量中,添加用戶變量 變量名PERL 變量值C:\Perl\site\bin;
確定后,打開DOS命令行輸入set PERL=C:\Perl\site\bin
關閉DOS命令窗口,再重新打開一個,發現perl已經可用了。
b. 官網下載源代碼。
http://www.openssl.org/source/ 下載 1.0.2e 這個版本修復了Heartbleed漏洞。
https://www.openssl.org/source/openssl-1.0.2e.tar.gz
(不用最新的 openssl-fips-2.0.10 是因為這個我嘗試過,編譯失敗。時間不允許去追究具體的原因。)
c. 編譯過程
perl Configure VC-WIN32 no-asm --prefix=d:/dev/vs/http/ssllib ms\do_ms.bat nmake -f ms\ntdll.mak nmake -f ms\ntdll.mak test nmake -f ms\ntdll.mak clean nmake -f ms\ntdll.mak install
nmake -f ms\ntdll.mak test
// 可以測試有沒有編譯成功
nmake -f ms\ntdll.mak clean
// 可以清理編譯結果
nmake -f ms\ntdll.mak install
// 編譯結果保存到指定目錄 d:/dev/vs/http/ssllib
生成結果目錄如圖
注1:nmake 工具在Visual Studio安裝目錄
"D:\Program Files\Microsoft Visual Studio 10.0\VC\bin\nmake.exe"
注2:本機沒有nasm 所以第一句加了參數no-asm。不然nmake -f ms\ntdll.mak會報錯error A2070:invalid instruction operands等。
2. 編譯zlib
a. 官網下載最新版本zlib源代碼
http://www.zlib.net/ zlib 1.2.8
http://zlib.net/zlib-1.2.8.tar.gz
b. 使用Visual Studio 2010 直接打開 zlib-1.2.8\contrib\vstudio\vc10\zlibvc.sln 運行即可。
或者在zlib根目錄下 命令行執行
nmake -f win32/Makefile.msc
3. 編譯libcurl
a. 官網下載libcurl源代碼
http://curl.haxx.se/download.html 最新 Version 7.46.0
http://curl.haxx.se/download/curl-7.46.0.tar.bz2
b. 根據源代碼根目錄下winbuild目錄下BUILD.WINDOWS.txt的提示
在源代碼同級的目錄下建立deps文件夾
此時的目錄結構如下圖
D:\dev\vs\http\
|__curl-src
| |_winbuild
|
|__deps
|_ lib
|_ include
|_ bin
將D:\dev\vs\http\ssllib\include下的openssl夾拷貝到D:\dev\vs\http\deps\include\目錄下;
將zlib源碼根目錄下的zconf.h、zlib.h和zutil.h拷貝到D:\dev\vs\http\deps\include目錄下。
將D:\dev\vs\http\ssllib\lib目錄下的libeay32.lib和ssleay.lib拷貝到D:\dev\vs\http\deps\lib目錄下;
將zlib源碼根目錄下的zlib.lib拷貝到D:\dev\vs\http\deps\lib目錄下。
c. 解壓后
命令行進入源代碼根目錄下 winbuild 目錄
nmake /f Makefile.vc mode=static WITH_SSL=dll WITH_ZLIB=dll DEBUG=yes
其他參數可以根據BUILD.WINDOWS.txt調整
生成文件在D:\dev\vs\http\curl-7.46.0\builds\下
如libcurl-vc-x86-debug-static-ssl-dll-zlib-dll-ipv6-sspi
4. 最后
驗證代碼,我是用
http://blog.csdn.net/sunflover454/article/details/49030803
特此感謝