一、源码下载
在这里https://github.com/curl/curl下载源码,注意选择分支,目前使用的分支为7.59.0;
也可以在https://curl.haxx.se/download.html 下载。
二、初始化源代码
进入到下载的源码文件夹中,执行curl/projects文件下generate.bat,生成一个windows文件,文件夹下面有VS的工程,我选择的VS14。
三、编译不需要加密层(TLS/SSL)版
1. 打开curl-all.sln工程
2. 选择不同的编译工程
3、如果不需要OpenSSL 和 SSH2 两个库,直接选择LIB Release执行(或者LIB Debug),执行成功了。不能支持https协议。
四、编译需要加密层(TLS/SSL)支持HTTPS协议
1. 也需要先初始化源代码。
执行curl/projects文件下generate.bat
2. libcurl发送https请求,依赖于OpenSSL。
(1)编译Openssl源码。得到.lib,.dll,.h 三类文件。
(2)将这三类文件放到Libcurl的同级目录下
D:\dev\vs\code\
|__curl-src
| |_winbuild
|
|__deps
|_ lib
|_ include
|_ bin
这里需要新建deps文件夹,注意deps文件夹和curl源码是同一级的。
3.复制路径
进入curl文件夹中的“winbuild”文件夹,并复制其文件夹路径到剪切板,例如:D:\dev\vs\code\curl_src\winbuild
4.启动命令行
打开开始菜单,找到vs2017,编译64位,选择"适用于 VS 2017 的 x64 本机工具命令提示",编译32位,选择"适用于 VS 2017 的 x86 本机工具命令提示",这里使用64位为例, 右键以管理员身份运行,进入到命令行中,输入命令: cd /d D:\dev\vs\code\curl_src\winbuild,进入到此目录
5.输入命令:
nmake /f Makefile.vc mode=static ENABLE_IDN=no WITH_SSL=static VC=15 MACHINE=x64 DEBUG=no
nmake /f Makefile.vc mode=static ENABLE_IDN=no WITH_SSL=static VC=15 MACHINE=x64 RTLIBCFG=static DEBUG=no
参数分析:
mode=static 表示生成静态链接库.lib文件,如果要生成动态链接库用 mode=dll
ENABLE_IDN=no 这个是必须加的,表示不使用Windows IDN APIs,默认是 yes,这样会导致使用时出现连接错误。
WITH_SSL=static 表示用Openssl的静态连接库(.lib)文件参与编译,如果用Openssl的动态链接库就写WITH_SSL=dll。
VC=15 表示用VS2017进行编译,也可以指定其他版本的VS。
MACHINE=x64 表示编译出的是64位版本程序,如果想编译出32位的用 MACHINE=x86
RTLIBCFG=static 表示静态编译CRT运行时库(/MT),否则默认是(/MD)动态链接运行时库。
DEBUG=no 表示编译release版本,如果想编译Debug版本用 DEBUG=yes。
更具体编译选项请阅读 curl\winbuild\BUILD.WINDOWS.txt 文档。
6. 输入上面命令之后,回车,等待编译完成,
打开curl源码文件夹中的“builds”文件夹,里面保存所有编译结果,编译完成。
7. 项目测试
此种编译方式已经通过https双向认证的测试。
可以用 http://blog.csdn.net/sunflover454/article/details/49030803 测试。