本文参考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:Perlbinperl.exe 在环境变量中,添加用户变量 变量名PERL 变量值C:Perlsitebin; 确定后,打开DOS命令行输入set PERL=C:Perlsitebin 关闭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
msdo_ms.bat
nmake -f msntdll.mak
nmake -f msntdll.mak test
nmake -f msntdll.mak clean
nmake -f msntdll.mak install
nmake -f msntdll.mak test // 可以测试有没有编译成功 nmake -f msntdll.mak clean // 可以清理编译结果
nmake -f msntdll.mak install // 编译结果保存到指定目录 d:/dev/vs/http/ssllib 生成结果目录如图
注1:nmake 工具在Visual Studio安装目录 "D:Program FilesMicrosoft Visual Studio 10.0VCbinnmake.exe"
注2:本机没有nasm 所以第一句加了参数no-asm。不然nmake -f msntdll.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.8contribvstudiovc10zlibvc.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:devvshttp |__curl-src | |_winbuild | |__deps |_ lib |_ include |_ bin 将D:devvshttpssllibinclude下的openssl夹拷贝到D:devvshttpdepsinclude目录下; 将zlib源码根目录下的zconf.h、zlib.h和zutil.h拷贝到D:devvshttpdepsinclude目录下。 将D:devvshttpsslliblib目录下的libeay32.lib和ssleay.lib拷贝到D:devvshttpdepslib目录下; 将zlib源码根目录下的zlib.lib拷贝到D:devvshttpdepslib目录下。 c. 解压后 命令行进入源代码根目录下 winbuild 目录 nmake /f Makefile.vc mode=static WITH_SSL=dll WITH_ZLIB=dll DEBUG=yes 其他参数可以根据BUILD.WINDOWS.txt调整 生成文件在D:devvshttpcurl-7.46.0builds下 如libcurl-vc-x86-debug-static-ssl-dll-zlib-dll-ipv6-sspi
4. 最后验证代码,我是用http://blog.csdn.net/sunflover454/article/details/49030803特此感谢 (编辑:甘南站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|