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).map

install
本文环境统一将依赖库组织到 @统一文件夹 下
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

 

posted @ 2024-01-23 22:10  与f  阅读(149)  评论(0编辑  收藏  举报