windows下编译支持https的libcurl
2015-12-10 20:04
666 查看
本文参考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
![](http://images2015.cnblogs.com/blog/470616/201512/470616-20151210200436480-810695857.jpg)
而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已经可用了。
![](http://images2015.cnblogs.com/blog/470616/201512/470616-20151210200737386-466445968.jpg)
![](http://images2015.cnblogs.com/blog/470616/201512/470616-20151210200755168-1814194095.jpg)
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. 编译过程
nmake -f ms\ntdll.mak test
// 可以测试有没有编译成功
nmake -f ms\ntdll.mak clean
// 可以清理编译结果
nmake -f ms\ntdll.mak install
// 编译结果保存到指定目录 d:/dev/vs/http/ssllib
生成结果目录如图
![](http://images2015.cnblogs.com/blog/470616/201512/470616-20151210200908308-984584750.jpg)
注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等。
![](http://images2015.cnblogs.com/blog/470616/201512/470616-20151210201518496-1579470614.jpg)
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
![](http://images2015.cnblogs.com/blog/470616/201512/470616-20151210201750871-383646787.jpg)
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 特此感谢
特此感谢。
公司项目中用到几个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
![](http://images2015.cnblogs.com/blog/470616/201512/470616-20151210200436480-810695857.jpg)
而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已经可用了。
![](http://images2015.cnblogs.com/blog/470616/201512/470616-20151210200737386-466445968.jpg)
![](http://images2015.cnblogs.com/blog/470616/201512/470616-20151210200755168-1814194095.jpg)
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
生成结果目录如图
![](http://images2015.cnblogs.com/blog/470616/201512/470616-20151210200908308-984584750.jpg)
注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等。
![](http://images2015.cnblogs.com/blog/470616/201512/470616-20151210201518496-1579470614.jpg)
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
![](http://images2015.cnblogs.com/blog/470616/201512/470616-20151210201750871-383646787.jpg)
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 特此感谢
相关文章推荐
- 关于iOS SDK9.0 不能用http请求的解决办法
- 【网络流】:poj2987,Firing
- Android的网络与通信
- 网络虚拟化之FlowVisor:网络虚拟层(下)
- Xcode7在运行包含HTTP协议的程序时报错解决方法 App Transport Security has blocked a cleartext HTTP (http)
- 《HTTP权威指南》– 1.HTTP概述
- 《HTTP权威指南》– 16.重定向与负载均衡
- 【网络流】:poj1087,A Plug for UNIX
- JsonHttpResponseHandler 工具
- sqlserver2005:到主机 的 TCP/IP 连接失败。 java.net.ConnectException
- 《HTTP权威指南》 – 11.验证码和新鲜度
- [开源与项目]JWFD科技树分支网络-GPU编程研究课题
- socket和http区别
- Splinter:测试网络应用的工具
- 《HTTP权威指南》– 10.安全HTTP
- 【计算机网络】:考完所感,送给下届学妹学弟
- https://msdn.microsoft.com/en-us/library/ff648951.aspx
- AngularJS中service,factory,provider的区别(转载:http://my.oschina.net/tanweijie/blog/295067)
- rpc rmi http
- PHP CURL访问HTTPS使用详解