环境:win10,vs2022,curl默认不支持https协议,要使用openssl库集成到cur项目中编译才可以
openssl编译需要zlib库。所以还要额外编译一个zlib的dll版本。
第一步:编译zlib 1.3.1
github上拉取源代码:https://github.com/madler/zlib.git
使用cmake gui工具构建sln
选择编译zlib的dll版本即可。
整理出zlib的include,lib,bin目录,为后面编译openssl链接准备。
第二步:集成zlib编译OpenSSL 3.2.1
源代码从github拉取或者下载最新发行版源码包都可以。
注意看官方文档的文件,上面有windows平台的安装指南。比如需要安装什么软件,哪里下载,安装指令,配置选项是什么怎么用,还是需要去阅读一下。
-
第一步
按照文档,先下载NASM和 Strawberry Perl
都是msi傻瓜式安装,安装后记得检查加入%path%环境变量中。 -
第二步
打开vs的本地命令行工具,32位选择x86 Native Tools Command Prompt for VS 2022
按照命令行一步一步执行。配置选项含义参考官方文档。
D:\Strawberry\perl\bin\perl.exe Configure VC-WIN32 --release --prefix=D:\Git\openssl-openssl-3.2.1\msvc_bulid_OpenSSL --openssldir=D:\Git\openssl-openssl-3.2.1\msvc_bulid_OpenSSL\SSL zlib-dynamic --with-zlib-include=D:\Git\zlib\exportPkg\include --with-zlib-lib=D:\Git\zlib\exportPkg\lib\zlib.lib
执行成功提示:
perl Configure
nmake
nmake test
nmake install
每个步骤需要的时间都挺多,耐心等待。
第三步:编译curl 8.5.0
打开cmd,运行
D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars32.bat
进入curl源码目录winbuild目录,执行
nmake /f Makefile.vc mode=dll WITH_SLL=dll SSL_PATH=D:\Git\curl\deps\OpenSSL_3.2.1 WITH_ZLIB=dll ZLIB_PATH=D:\Git\curl\deps\zlib_1.3.1
报错U073,查找说是交叉引用了,去掉对zlib的引用即可。
nmake /f Makefile.vc mode=dll WITH_SLL=dll SSL_PATH=D:\Git\curl\deps\OpenSSL_3.2.1
默认生成目录是:curl\builds
第四步:使用curl测试https请求
使用生成目录下的curl,进行命令行测试:
curl -V
如果Protocals中有https就说明可以了。
curl "https://www.baidu.com"
如果可以请求成功出数据就是可以了。
Notes: 这次编译出来的libcurl.dll查找依赖不依赖opensll,以前他们编译的可以看到依赖,不知道是不是版本更高的原因。