c++ curl和openssl编译并且支持https
windows系统下的curl库编译有好几种形式。
方法一:下载了curl库后,解压文件,projects\Windows\文件夹下有各种vs项目的各种版本,打开生成DLL Release或DLL Release -DLL Windows SSPI即可.
(DLL Release - DLL OpenSSL 项目,看方法二操作)
方法二:
前提准备:命令行方式,(windows下的cmake工具叫做nmake,当然打开cmd命令行是没有这个环境的,但是微软已经给我们准备好了有所有vs工具的命令行)
文件位置:
有了这些工具,我们就可以用命令行的进行,源码编译了.
----------------------------------------------------------------------------------------
步骤:
如果单纯的编译libcurl,这个动态库将不能去发送带ssl验证的https请求,因此需要编译openssl。zlib的作用主要是curl可以自动解码gzip的响应数据。
系统与环境
- win10 1607
- x64的处理器与操作系统
- vs2022
下载文件
zlib库 http://www.zlib.net/ 最新版本就可以(作者下载版本1.2.8);
openssl库 https://www.openssl.org/source/ 根据需求下载版本(作者下载版本1.1.1g);
libssh2:libssh2-1.9.0 (https://libssh2.org/download/libssh2-1.9.0.tar.gz);
libcurl库 https://curl.se/download.html 根据需求下载版本 (为了项目的兼容性,作者使用版本7.58.0)。
约定(四个工具编译的目录放在@统一文件夹 -deps,全部编译release-64位版本):
(每个编译好的工程里面都有,include,bin , lib 文件夹)
zlib-1.2.8的编译:
1. 可以用文件中存在的windows工程:contrib\vstudio文件夹
2.cmake工具生成vs工程
环境准备
zlib:zlib-1.2.8 http://www.zlib.net/
步骤
1)导入zlibvc.vcxproj (目标所在目录: xxx\zlib-1.2.8\contrib\vstudio\vc11)
2)更改zlibvc部分属性:
配置管理器为:x64
【常规】->【目标文件名】内容改为zlibwapi;
【C/C++】->【预处理器定义】更改ZLIB_WINAPI–>ZLIB_DLL (为了编译出的dll可以使用zip相关接口)
【链接器】->【常规】->【输出文件】内容改为$(OutDir)$(TargetName).dll
【链接器】->【高级】->【导入库】内容改为$(OutDir)$(TargetName).lib
【链接器】->【调试】->【生成程序库文件】内容改为$(OutDir)$(TargetName).pdb
【链接器】->【调试】->【映射文件名】内容改为$(OutDir)$(TargetName).mapinstall
本文环境统一将依赖库组织到 @统一文件夹 下
zlib安装目录:@统一文件夹\zlib
安装文件夹组织如下:lib和bin文件夹组织如下:
include包含内容如下:
openssl-3.2.0编译:
https://blog.csdn.net/qq_39311335/article/details/116919598
blog.csdn.net/aichen11/article/details/131192209
环境准备
openssl:openssl-1.1.1g
zlib:zlib-1.2.8 (上述zlib编译结果)步骤
编译前仔细阅读以下INSTALL 和 NOTES.WIN 这两个文件,版本1.0.2对应的文件叫 INSTALL.W32和INSTALL.W64,也不一样,编译过程基本上都在这两个文件里面。
1)安装perl和汇编工具,按照NOTES.WIN里面推荐的去安装 ActivePerl和nasm,一般安装最新版即可。注:官网下载ActivePerl太慢,可以从360的软件管家里面搜索安装。
2)以管理员身份打开VS2017的命令行程序,本文编译x64版本环境,打开 “x64 Native Tools Command Prompt for VS 2017”。在命令行中切换至openssl-1.1.1g 解压根目录,按照如下命令开始编译>> perl Configure VC-WIN64A --prefix=@统一文件夹\openssl --with-zlib-include=@统一文件夹\zlib\include --with-zlib-lib=@统一文件夹\zlib\lib\release\zlib_zip1211.lib zlib-dynamic # VC-WIN64A:64位版本编译 # --prefix:编译结果安装目录 # --with-zlib-include:zlib库包含目录 # --with-zlib-lib:zlib库导入库文件 # zlib-dynamic:zlib以dll形式引入 # zlib:支持zlib压缩 # no-shared:编译静态库 不编译dll # --debug:编译debug版本 # --release:编译release版本 # 此命令行运行过程中会报 @perl openssl错误图 所示错误,忽略即可 >> nmake >> nmake test >> nmake install >> nmake clean
报错:Can‘t locate Win32/Console.pm in @INC (you may need to install the Win32::Console module) 请看(要注释一些配置文件):https://blog.csdn.net/qq_40378795/article/details/121002515
使用perl命令编译时,报错,请看 https://blog.csdn.net/csyh1256/article/details/124565972
install
命令行执行完毕后,内容组织如下:
openssl安装目录:@统一文件夹\openssl
安装文件夹组织如下:
lib内容如下:
bin内容如下:
在这里使用时:
加入必要的openssl库后测试:
curl --cacert cacert.pem "https://www.baidu.com"
可以curl.exe https://www.baidu.com --insecure 验证
curl.exe https://www.baidu.com 错误提示 :https://curl.se/docs/sslcerts.html
详细教程:https://blog.csdn.net/xys206006/article/details/102593075
出现的问题: https://blog.csdn.net/eastcnme/article/details/103090770
openssl携带zlib编译出错:https://blog.csdn.net/weixin_42806458/article/details/110678710
https://blog.csdn.net/aichen11/article/details/131192209
转 :https://blog.csdn.net/weixin_39766005/article/details/109003194
全 :https://blog.csdn.net/xys206006/article/details/102593075
https://blog.csdn.net/qq_37781464/article/details/108512630
openssl编译: https://blog.csdn.net/qq_39311335/article/details/116919598
https://blog.csdn.net/sinat_35178307/article/details/108079987
视频: https://www.bilibili.com/video/BV1bK411n76C/
https://www.bilibili.com/video/BV1S44y1E78a
https://blog.csdn.net/weixin_42206314/article/details/108221982
有curl使用:https://blog.csdn.net/hhy321/article/details/130516445
有curl使用:https://blog.csdn.net/arbboter/article/details/43448189
https://blog.csdn.net/csyh1256/article/details/124565972
zlib 编译 :https://blog.csdn.net/Alexabc3000/article/details/122587893