`
dewei
  • 浏览: 164435 次
  • 性别: 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版本。


 

 

分享到:
评论

相关推荐

    libcurl-vc15-x86-release-dll-ssl-static.zip

    《libcurl-vc15-x86-release-dll-ssl-static.zip:构建C++应用中的HTTPS支持》 libcurl是一个著名的开源库,用于在各种编程语言中处理网络协议,包括HTTP、HTTPS、FTP等。在给定的压缩包“libcurl-vc15-x86-release...

    libcurl库 libcurl-7.19.3-win32-ssl-msvc

    这个名为"libcurl-7.19.3-win32-ssl-msvc"的版本是针对Windows平台的,特别适用于32位系统,并且集成了SSL(Secure Sockets Layer)支持,意味着它能够处理加密的HTTPS连接。此外,它还与Microsoft Visual C++(MSVC...

    libcurl-vc15-x86-release-static-ipv6-sspi-schannel.rar

    《libcurl在VS2019 MFC项目中的应用与集成》 libcurl是一个流行的开源库...在实际开发中,我们需要正确配置编译环境,理解libcurl的基本用法,以及如何在MFC框架下有效地整合这个库,以实现高效且安全的网络通信功能。

    libcurl-7.19.3-win32-ssl-msvc.zip

    这个版本的libcurl特别优化了对Windows系统的支持,包括使用MSVC编译器进行编译,这使得它能很好地与Windows API集成,提供良好的性能和稳定性。对于那些需要在Windows环境下进行网络编程的开发者来说,这是一个非常...

    libcurl-vc15-x86-release-static-ssl-static-zlib-static-ipv6-sspi.zip

    这个压缩包"libcurl-vc15-x86-release-static-ssl-static-zlib-static-ipv6-sspi.zip"是为Windows平台编译的一个特定版本,针对Visual C++ 15(即VS2017)的x86架构。以下是关于这个压缩包内含的组件和功能的详细...

    Android libcurl with ssl 预编译库

    libcurl是一个开源的C库,它提供了丰富的API接口,可以处理多种互联网协议,如HTTP、FTP、SMTP等,支持SSL加密,使得在传输敏感数据时能够保证安全。在Android平台上,libcurl的使用需要特别关注与SSL(Secure ...

    libcurl源码编译及使用 - B_H_L的专栏 - 博客频道 - CSDN1

    libcurl支持多种平台,包括Windows、Linux、macOS等,并且可以与多种编程语言(如C、C++、Python、Java等)集成。 总结来说,本文主要介绍了libcurl库的源码编译过程,包括Linux和Windows平台的编译步骤,以及一个...

    linux下编译libcurl库支持https

    linux环境下编译移植libcurl库支持https帮助文档,可查看当前编译的功能是否成功

    libcurl-vc16-x64-release-static-ipv6-sspi-schannel.rar

    "static"意味着这个库是静态链接的,意味着libcurl的功能会被直接整合到目标应用程序中,而不需要运行时库的支持。"ipv6"表明支持IPv6协议。"sspi-schannel"指的是使用Windows的安全支持提供者接口(SSPI)和...

    libcurl支持https访问curl支持openssl协议编译好的库(包含openssl)

    libcurl 支持openssl协议 编译好的库和头文件以及openssl库文件。可以支持https地址的访问。备注:可能代码需要制定不验证ssl证书(curl_easy_setopt(easy_handle, CURLOPT_SSL_VERIFYPEER, 0L);)

    libcurl-devel-7.29.0-51.el7.x86_64.rpm

    离线安装包,亲测可用

    x64 libcurl编译好的版本VS可用,64位windows

    预编译的libcurl版本包含了最新的SSL支持,意味着你可以安全地处理HTTPS请求。 在提供的压缩包中,有以下几个关键目录: - **bin**:这个目录通常包含编译好的可执行文件和动态链接库(DLLs),供应用程序在运行时...

    libcurl7.73.0-vc12-x86-release-dll-ipv6-sspi-schannel.zip

    最后,“sspi-schannel”是指使用了Windows的安全支持提供者接口(SSPI)和Schannel安全套接字层(SSL/TLS)实现,确保了libcurl在进行HTTPs等加密通信时的安全性。 在实际应用中,libcurl提供的API可以让开发者...

    libcurl-7.64.0-3-vs16-x86.zip

    "libcurl-7.64.0-3-vs16-x86.zip"是一个针对Visual Studio 2019(VS16)的x86平台编译的libcurl库版本,包含了库文件、可执行文件以及头文件,便于开发和使用。 1. **libcurl库介绍** libcurl库由Daniel Stenberg...

    libcurl-devel-7.61.1-18.el8.aarch64.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

    使用libcurl获取经过gzip压缩的网页文件

    libcurl是一个C语言库,提供了一系列函数接口,用于在各种协议下传输数据。对于HTTP协议,libcurl可以设置请求头来告知服务器客户端支持gzip压缩,这样服务器就会返回压缩过的响应数据。在接收数据时,libcurl会自动...

    android平台libcurl-7.35.0编译成果物(支持openssl)

    本文将深入探讨如何在Android平台上编译libcurl-7.35.0,并特别关注其与OpenSSL的集成,以支持安全的HTTPS连接。 首先,我们需要了解libcurl的基本功能。libcurl是一个C语言编写的应用程序接口(API),它能够处理...

    libcurl-devel-7.29.0-59.el7.i686.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

    libcurl 库, 支持 gzip 和 Open SSL (VS2013 编译版本)

    这是由 VS 2013 编译的 libcurl 库, 含有 lib 和 dll 和 .h 头文件可直接使用, 版本为: libcurl/7.46.0 OpenSSL/1.0.2e zlib/1.2.8 另外 gzip 库和 OPen SSL 库都可以单独使用. 附加 libcurl 调用实例一个!

    libcurl for Android支持ssl

    本篇文章将深入探讨如何在Android环境下集成并使用libcurl,特别关注其对ssl的支持,以及如何通过cyassl进行编译。 首先,让我们了解libcurl与ssl的结合。SSL(Secure Socket Layer)和其更新版本TLS(Transport ...

Global site tag (gtag.js) - Google Analytics