libcurl 编译支持gzip、ssl、c-ares

使用CURLOPT_NOSIGNAL后必须启用异步DNS,因此需要重新编译libcurl,使其支持c-ares。

curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L);//禁用掉alarm信号,防止多线程中使用超时崩溃
curl_easy_setopt(curl, CURLOPT_FORBID_REUSE, 1L); //禁掉alarm后会有大量CLOSE_WAIT

 
-------------------------------------------
下面自己编译libcurl支持c-ares

下载c-ares:
http://c-ares.haxx.se/download/c-ares-1.10.0.tar.gz

解压后用VS2010打开c-ares-1.10.0\vc\vc6aws.dsw
编译dll,生成release版cares.dll和cares.lib

编译openssl和zlib(略过,之前我们已经编译过啦)

编译libcurl
进入curl-7.26.0\winbuild文件夹。
新建一个build_release.bat文件,内容如下:

set INCLUDE=%INCLUDE%;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\
set LIB=%LIB%;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\
nmake /f makefile.vc mode=dll DEBUG=no  VC=10 WITH_SSL=dll WITH_ZLIB=dll USE_IDN=no USE_SSSPI=yes USE_IPV6=yes GEN_PDB=yes

 注:我的操作系统是windows 7 x64并且安装了win8 sdk,因此在cmd命令中改写include和lib。

保存它。

在curl-7.26.0同级目录建立一个deps文件夹,并且在它下面再建立lib、include、bin三个文件夹。
把openssl和zlib以及c-cares的头文件和库复制到它们下面。目录结构如下:

 

 

├─bin	(8 files)
│    cares.dll	
│    cares.pdb	
│    caresd.dll	
│    libeay32.dll	
│    libeay32.pdb	
│    ssleay32.dll	
│    ssleay32.pdb	
│    zlib1.dll	
├─include	(22 files)
│    ares.h	
│    ares_build.h	
│    ares_data.h	
│    ares_dns.h	
│    ares_getenv.h	
│    ares_getopt.h	
│    ares_inet_net_pton.h	
│    ares_iphlpapi.h	
│    ares_ipv6.h	
│    ares_library_init.h	
│    ares_llist.h	
│    ares_nowarn.h	
│    ares_platform.h	
│    ares_private.h	
│    ares_rules.h	
│    ares_setup.h	
│    ares_strcasecmp.h	
│    ares_strdup.h	
│    ares_version.h	
│    ares_writev.h	
│    zconf.h	
│    zlib.h	
│─openssl	(这个目录是复制openssl-1.0.0c\inc32下面的openssl文件夹)
└─lib	(7 files)
    cares.lib	
    caresd.lib	
    ibcares.lib	
    libcaresd.lib	
    libeay32.lib	
    ssleay32.lib	
    zlib.lib	

 

打开MakefileBuild.vc 大约98行

SSL_LIBS     = libeay32.lib ssleay32.lib caresd.lib #caresd.lib是我们新添加的dll版c-ares

 

打开curl-7.26.0\lib\config-win32.h 大约613行

/* #define USE_ARES 1 */
去掉这一行的注释,并且注释掉后面的 #define USE_THREADS_WIN32 1

 

打开vs2010命令提示符
执行build_release.bat文件,OK等一会儿就看到
curl-7.26.0\builds\libcurl-release-dll-ssl-dll-zlib--sspi文件夹生成了,里面有我们需要的libcurl版本。


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值