一、CURL简介
CURL是一个基于命令行的应用工具,提供利用URL标准进行文件传输的功能。目前已经支持非常多的流行的互联网协议,如:FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS 和 FILE等。CURL支持SSL认证,HTTP POST/PUT,FTP上传,HTTP上传、代理、cookies、用户+密码认证、文件续传、代理管道等一系列强大功能。
CURL是用C语言写的,但是绑定了很多开发语言。大体上可以把cURL分成命令行工具和libcurl库两个部分,命令行工具可以直接输入指令完成相应功能,libcurl则是一个客户端URL传输库,是线程安全且兼容IPv6,可以非常方便地用来做相关开发。这里就是在Windows环境下编译libcurl库,使得我们可以在自己的程序里使用cURL提供的功能。
libcurl就是curl的库,其中在C++/C 在程序涉及到url协议通迅的时候,libcurl是首选。现在的许多客户端软件,如百度网盘在与服务器会话中,都是使用libcurl作为底层库。
这里发一下我自己编译好的libcurl库,使用OpenSSL静态库编译,不需要再依赖OpenSSL的库,32位和64位的都有:
百度云下载地址 提取码:65rs
二、CURL编译
1、编译OpenSSL库
libcurl主要通过SSL(Secure Sockets Layer 安全套接层)和TLS(Transport Layer Security 传输层安全),在传输层对网络连接进行加密。我这里使用OpenSSL使用作为开发库。 也可以使用GnuTLS来支持TLS/SSL协议,libcurl要支持ssh协议也可以通过libssh2库进行支持。
编译OpenSSL库最好编译静态库,这样我们最后生成的libcurl库就不需要再依赖OpenSSL的dll了。编译OpenSSL库的流程,可以看我的另一篇文章:Windows下编译OpenSSL
2、下载CURL
我这里下载的是最新的7.74.0版本。
CURL官网:https://curl.se/
CURL百度云下载:https://pan.baidu.com/s/1TI3oW9wvPqL7Omdv1o3V0A 提取码:z4ad
3、编译CURL
编译CURL的过程就比编译OpenSSL要简单多了,先将上面下载的curl的压缩包包,解压到一个文件目录,进入到该目录下的winbuild目录

执行命令 nmake /f Makefile.vc mode=dll VC=15 WITH_DEVEL=F:\CURL\openssl_static_lib-1.1.1h-x64 WITH_SSL=static ENABLE_SSPI=no ENABLE_IPV6=no

命令注释 mode=dll 编译libcurl位动态链接库,如果static 就是把libcurl编译位静态库
VC=15 代表使用的是VC2015
WITH_DEVEL=F:\CURL\openssl_static_lib-1.1.1h-x64 表示用到第三方开发包的目录,前面已经编译好的OpenSSL静态库在此目录
WITH_SSL=static 代表使用的OpenSSL库,是静态库
ENABLE_SSPI=no ENABLE_IPV6=no(禁用SSPI,ipV6功能)
稍等片刻就编译成功了。
winbuild目录下也有一个README.md文件,里面详细记录了所有的编译选项,想要设置别的编译选项的可以看一下。
4、测试
编译好后会在解压的CURL目录下的生成一个builds目录,编译好的libcurl库就在里面

我们验证一下编译好的libcurl是不是支持HTTPS,可以使用编译好的libcurl生成的程序外壳curl.exe测试


可以访问HTTPS的地址,说明我们编译成功了。这里后面加上--insecure是为了跳过证书验证,证书验证可以去CURL官网下载cacert.pem。
本文介绍了如何在Windows环境下编译libcurl库,包括使用OpenSSL静态库编译CURL,详细步骤从下载CURL源码到执行编译命令,以及编译选项的解释。编译完成后,通过curl.exe测试验证HTTPS支持,确保编译成功。
6890

被折叠的 条评论
为什么被折叠?



