zoukankan      html  css  js  c++  java
  • windows下编译支持https的libcurl

    本文参考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:Perlinperl.exe
    在环境变量中,添加用户变量 变量名PERL 变量值C:Perlsitein;
    确定后,打开DOS命令行输入set PERL=C:Perlsitein
    关闭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 ms
    tdll.mak
    
    nmake -f ms
    tdll.mak test
    
    nmake -f ms
    tdll.mak clean
    
    nmake -f ms
    tdll.mak install

    nmake -f ms tdll.mak test
    // 可以测试有没有编译成功
    nmake -f ms tdll.mak clean
    // 可以清理编译结果

    nmake -f ms tdll.mak install
    // 编译结果保存到指定目录 d:/dev/vs/http/ssllib
    生成结果目录如图

    注1:nmake 工具在Visual Studio安装目录
    "D:Program FilesMicrosoft Visual Studio 10.0VCin make.exe"

    注2:本机没有nasm 所以第一句加了参数no-asm。不然nmake -f ms tdll.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.0uilds下
    如libcurl-vc-x86-debug-static-ssl-dll-zlib-dll-ipv6-sspi

    4. 最后
    验证代码,我是用
    http://blog.csdn.net/sunflover454/article/details/49030803
    特此感谢

  • 相关阅读:
    CentOS 7部署KVM之三基本管理
    CentOS 7部署KVM之二安装配置
    CentOS 7部署KVM之一架构介绍
    DOM 事件流
    渐进增强与优雅降级
    (三)跟我一起玩Linux网络服务:DHCP服务配置之主服务器配置
    (二)跟我一起玩Linux网络服务:BIND的自动部署(附上完整的代码)
    责任链模式--行为模式
    装饰模式--- 结构型模式
    elastic-job+zookeeper实现分布式定时任务调度的使用(springboot版本)
  • 原文地址:https://www.cnblogs.com/zzugyl/p/5037152.html
Copyright © 2011-2022 走看看