LibCurl环境搭建

libcurl发送https请求,依赖于openssl和zlib








1 编译openssl
 1) openssl的编译,依赖于ActivePerl,所以我们需要安装这个工具
 这里使用ActivePerl_5.16.2.3010812913.msi,他默认会把自己注册到环境变量中,所以不需要
 添加环境变量,也不需要重启机器了。比较人性化了
 
 2) Openssl版本的选择
    高版本的openssl用vs2015编译的时候缺少东西,用了一个低版本的openssl-1.0.1t.tar.gz,
    不知道这个版本心脏滴血的漏洞补上了没有,不过可以用。
    
  3) 编译的配置文件
   源码目录的ms目录中有
    nt.mak   编译为静态库的配置,我们用这个
   ntdll.mak 编译为动态库的配置
 
 
 
 过程如下
 
开始菜单栏找到vs2015,然后选择Developer Command Prompt for VS2015,运行后再运行下面的命令
 
perl Configure VC-WIN32 no-asm --prefix=G:\work\src\libcurl\openssl-1.0.1t


ms\do_ms.bat //会重新生成默认的配置nt.mak ntdll.mak ,会在文件中修正本源码的路径,所以在生成的文件后,再去修改
nt.msk ,其中CFLAG= /MT 这个地方要改为/MT,因为我们用release版本。


nmake -f ms\nt.mak //编译


nmake -f ms\nt.mak test // 可以测试有没有编译成功


nmake -f ms\nt.mak clean //可以清理,暂时用不到


nmake -f ms\nt.mak install //保存结果到指定的目录G:\work\src\libcurl\openssl-1.0.1t








2. 编译zlib
 
  这里用的是zlib-1.2.11
  
  1)开始菜单栏找到vs2015,然后选择Developer Command Prompt for VS2015,运行后再运行下面的命令
  
  2) 编译脚本在win32的Makefile.msc文件,我们修改CFLAGS  = -nologo -MT 改为MT MT MT 不是MD MD MD
  3)nmake -f win32/Makefile.msc 






3. 编译libcurl


1) 在源代码同级的目录下建立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目录下。


2) 解压libcurl
    
    1)开始菜单栏找到vs2015,然后选择Developer Command Prompt for VS2015,运行后再运行下面的命令


    2) 编译脚本在curl-7.55.1\winbuild下的MakefileBuild.vc,暂时不用修改,因为要编译为DLL还是静态库,是由命令决定的
    
    3) 写一个bat脚本
      
       @REM @echo off


@nmake /f Makefile.vc  WITH_DEVEL=../../deps  mode=static VC=14 WITH_SSL=dll WITH_ZLIB=dll ENABLE_IDN=yes RTLIBCFG=static DEBUG=no MACHINE=x86


@REM @echo on
    
      WITH_DEVEL=../../deps //这个是我们要编译进来的库,openssl zlib
      RTLIBCFG=static 和  mode=static //编译为静态库
       WITH_SSL=dll WITH_ZLIB=dll//不是很明白,但是要这样写,要链接进来
      
      具体帮助可以查看 BUILD.WINDOWS.txt文件
      
      
   4)   cd 到winbuild 然后 运行脚本build_with_ssl_zlib.bat




   5) 最后编译lib成功了,已经不影响我们使用了 。但是链接curl.exe没有成功,
       错误入下:libcurl_a.lib(rand_win.obj) : error LNK2019: unresolved external symbol __imp__BitBlt@36 referenced in func
        ……………………………………
        
       最后我们在 MakefileBuild.vc中间中 WIN_LIBS    = ws2_32.lib wldap32.lib advapi32.lib 的后面添加  User32.lib Gdi32.lib




     6)
      生成文件在D:\dev\vs\http\curl-7.46.0\builds\下如libcurl-vc-x86-debug-static-ssl-dll-zlib-dll-ipv6-sspi






4 使用
  创建一个release工程,修改库的使用方式是mt,
  工程中加入如下
  
 预处理定义里面加入
CURL_STATICLIB;


头文件
  #include "curl.h"
#include "easy.h"
  


源文件
  #pragma comment(lib,"libcurl_a.lib")
  
  //不加入下面三个库,会链接报错
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"winmm.lib")
#pragma comment(lib,"wldap32.lib")








5 测试curl.exe
curl  -F "file_data=@E:\AAB.bin" -F "file_path=E:\AAB.bin"  -F "file_data=@E:\AAA.bin" -F "file_path=E:\AAA.bin"   -F "api_key=ee0283c1-585e-4ba8-b85f-d395ea968dec"  -F "submit_token=c9cb3f55670de94ec02f33f3a031588750300a19-ac96e834-38cc-42c3-ac14-5c57291758f3"  http://172.0.2.27/http_server/


测试服务器用172.0.2.27 的hfs服务器






















参考:
环境win10+2015




编译zlib和openssl的时候注意选择MT--静态库 /MD --动态库 




编译openssl and zlib ,openssl 用openssl-1.0.1t.tar.gz ,别的版本编译有问题。
http://www.cnblogs.com/zzugyl/p/5037152.html




openssl 动态和静态库的选择
http://blog.163.com/weiming886521365@126/blog/static/331150742013101233712842/


Win10+VS2015编译libcurl
http://blog.csdn.net/alger_magic/article/details/52584579








//官方文档

https://curl.haxx.se/libcurl/c/



百度云关键字(SRC\windows)

libcurl.zip














  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值