`
dewei
  • 浏览: 163067 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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版本。


 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics