windows平台编译libcurl (zlib+openssl)
1.环境:vs2022(作者的安装环境,vs环境根据自己安装版本而定)。
2.开源库下载:
zlib库 http://www.zlib.net/ 最新版本就可以(作者下载版本2.13.0);
openssl库 https://www.openssl.org/source/ 根据需求下载版本(作者下载版本1.1.1);
libcurl库 https://curl.se/download.html 根据需求下载版本 (为了项目的兼容性,作者使用版本7.58.0)。
3.开源库编译:
3.1zlib编译:zlib解压后进入zlib-1.2.13\contrib\vstudio\vc14路径,启动zlibvc.sln
选中zlibvc使用默认选项
编译时选择x64,Release开始生成。
进入zlib-1.2.13\contrib\vstudio\vc14\x64\ZlibDllRelease目录拿到zlibwapi.lib和zlibwapi.dll文件。
为下一部openssl编译库准备导入文件和lib库目录(当前zlib相应文件),新建zlib文件夹,在zlib里面建include和bin目录。
include文件夹将zlib-1.2.13开源库里的zlib.h和zconf.h放入;bin文件夹里放入刚才编译出的zlibwapi.lib和 zlibwapi.dll文件。
3.2 openssl库编译:
3.2.1准备环境:
openssl-1.1.1解压进入目录,阅读以下INSTALL 和 NOTES.WIN 这两个文件,要求安装activePerl 和 nasm
activePerl下载地址 https://www.activestate.com/products/perl/;(也可以通过其他方式下载,官网下载有点小啰嗦)
nasm 下载地址 https://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=D
使用管理员权限安装activePerl时会自动设置系统环境变量,nasm安装后可能需要手动添加系统环境变量(作者是手动设置path)。
3.2.2开始编译:
打开vs的命令行工具,根据需求使用x86还是x64工具,作者使用x64工具编译(开始菜单->visual studio 2022文件夹点击显示里面的工具列表)。
cd 进入 openssl-1.1.1解压后目录(windows命令cd后有可能还在源目录,记得要切换根目录比如d盘d:)
执行编译配置命令 perl Configure VC-WIN64A --prefix=xxx\zlib --with-zlib-include=xxx\zlib\include --with-zlib-lib=xxx\zlib\bin\zlibwapi.lib zlib-dynamic
备注:VC-WIN64A 是64位版本编译; zlib-dynamic 是使用zlib的动态库,如果使用静态库 zlib。
后执行nmake命令,开始编译(执行时间会有点久)
编译完成在openssl-1.1.1解压后目录 里会生成相应的库:
准备libcurl库编译资料,将本次编译的dll和lib资料收集,新建deps文件夹,在里面新建include,lib,bin文件夹。
将openssl-1.1.1\include里的内容放入新建的include里,将libssl.lib和libcrypto.lib放入新建的lib里,将libssl-1_1-x64.dll和libcrypto-1_1-x64.dll放入新建的bin里。并将zlib的库文件和头文件也分别放入deps下的include(.h文件),lib(.lib文件),bin(.dll文件)文件夹里。
3.3libcurl库编译:
进入解压后curl库目录,作者使用7.58.0版本(作者文件路径curl-curl-7_58_0),进入winbuild。
打开BUILD.WINDOWS.txt仔细阅读,会告诉你编译规则,
将deps文件夹放到与curl路径平行目录(或者通过WITH_DEVEL设置目录)
继续使用vs工具命令,先进入curl-curl-7_58_0/winbuild 路径,执行编译命令:
nmake /f Makefile.vc mode=dll VC=15 WITH_SSL=dll WITH_ZLIB=dll MACHINE=x64
编译完成在builds目录生成相应的文件
在bin目录会有libcurl.dll和curl.exe
将相关dll copy到当前目录,可以curl.exe https://www.baidu.com --insecure 验证:
--insecure是为了跳过证书验证,证书验证可以去CURL官网下载cacert.pem。
至此可以提取libcurl.lib 和libcurl.dll 跟相关联dll去使用了。
4.参考资料:
https://blog.csdn.net/xys206006/article/details/102593075
https://blog.csdn.net/Sakuya__/article/details/113246127