windows openssl编译x64版libssl.lib,编译x64版本libcurl.lib,支持https,vs2015编译器
不要纠结,直接选择用perl编译!
告诫想要用弄成vs编译版的,暂时先别给自己增加麻烦
告诫,以下执行的每一步,都不要纠结
先安装环境
- nasm 64位版本 https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/win64/nasm-2.16.01-installer-x64.exe
- perl 64位版本
我用的是 https://www.activestate.com/platform/supported-languages/perl/,
也可以使用 https://strawberryperl.com/ - 我使用的是Windows VS2015编译器,编译器的安装就不多说了。
配置环境变量,也就是把perl和nasm的bin路径添加到环境变量path中。
在cmd中使用【perl -v】,可以验证perl是否安装成功
目标
- windows环境,vs2015编译器,x64,编译libcurl静态库。
- libcurl支持https
可能的疑问
nghttp2目录是干啥用的:用于支持http/2,如果不需要用到http/2,完全可以忽略,我在下文只会顺带提几句编译支持http/2的方法。
基础条件【磨刀不误砍柴工】
-
为了不会混乱,我就直接在桌面上创建了一个目录,存在相关代码和生成的库,基础路径【C:\Users\MR\Desktop\openssl_20241216】,每个人的电脑桌面路径不一样,不用纠结。openssl下载地址:https://openssl-library.org/source/,curl下载地址:https://github.com/curl/curl.git,这些地址可能会变,不用纠结,如果用不了,自己上网搜索就行。
-
以下是我的目录结构:curl目录是从git拉取curl代码的目录,curl_static可以忽视,我自己创建的用于存放即将生成的库,等会儿在编译的时候,会自动生成。deps目录,以及内部的子目录,先创建,不用问为什么。




编译openssl
- 下载源码,尽可能是最新版本的,因为低版本的源码编译出来的库,一些接口可能不支持。
https://github.com/openssl/openssl
- 关键步骤:在开始菜单中,找到【VS2015 x64 本机工具命令提示符】,使用管理员权限运行,打开cmd界面。

- 关键步骤:在cmd,切记,这是在上一步中,用管理员身份打开的cmd中操作

- 关键步骤:用perl编译openssl静态库,no-shared 表示编译静态库,VC-WIN64A 是x64,之后就是漫长的编译等待。
5. openssl没有指定生成目录,我这边默认是生成到 【C:\Program Files\OpenSSL】


- 把生成的openssl拷贝到deps下
【C:\Program Files\OpenSSL\include\openssl】=》【C:\Users\MR\Desktop\openssl_20241216\deps\include】
【“C:\Program Files\OpenSSL\lib\libcrypto.lib”】=》【C:\Users\MR\Desktop\openssl_20241216\deps\lib】
【“C:\Program Files\OpenSSL\lib\libssl.lib”】=》【C:\Users\MR\Desktop\openssl_20241216\deps\lib】
【“C:\Program Files\OpenSSL\lib\ossl_static.pdb”】=》【C:\Users\MR\Desktop\openssl_20241216\deps\lib】


- 关键步骤
一些可能用到的语句,可以先忽略
nmake /f Makefile.vc mode=static VC=14 WITH_SSL=static WITH_DEVEL=C:\Users\MR\Desktop\libcurl\curl\deps DEBUG=yes ENABLE_IDN=no MACHINE=x64perl Configure VC-WIN64A no-shareddumpbin /headers openssl.execurl.exe -Vcurl -I https://www.google.comnmake clean
相关文章:
windows openssl编译x64版libssl.lib,编译x64版本libcurl.lib,支持https,vs2015编译器
不要纠结,直接选择用perl编译! 告诫想要用弄成vs编译版的,暂时先别给自己增加麻烦 告诫,以下执行的每一步,都不要纠结 先安装环境 nasm 64位版本 https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/win64/nasm-…...
搭建 Elasticsearch 集群:完整教程
本文将详细介绍如何在 Linux 环境下搭建一个 Elasticsearch 集群,涵盖环境准备、配置优化、服务启动等多个环节。 一、环境准备 创建安装目录 mkdir /es cd /es解压 Elasticsearch 安装包 tar -xzf elasticsearch-7.10.1-linux-x86_64.tar.gz -C /es配置环境变量 编…...
如何实现序列化和反序列化?如何处理对象的生命周期管理?
序列化和反序列化 实现思路: 序列化:将对象的状态信息转换为可以存储或传输的格式,通常是字节流。 确定要序列化的对象的数据成员。将这些数据成员按照一定的规则(如二进制、文本、JSON、XML 等)编码为字节序列。将生…...
WPF+MVVM案例实战与特效(三十八)- 封装一个自定义的数字滚动显示控件
文章目录 1、运行效果2、案例实现1、功能设计2、页面布局3、控件使用4、运行效果3、拓展:多数字自定义控件1、控件应用4、总结1、运行效果 在Windows Presentation Foundation (WPF)应用程序中,自定义控件允许开发者创建具有特定功能和外观的独特UI元素。本博客将介绍一个名…...
docker安装Redis、docker使用Redis、docker离线安装redis、Redis离线安装
服务器到期了,换了一个新的环境要重搭,就记录一下好了: -----docker在线安装Redis 拉取 Redis 镜像 docker pull redis:6.2 运行 Redis 容器 docker run --name redis -d redis docker run --name redis -d redis:6.2 映射端口 docker run -…...
单目动态新视角合成
目录 单目动态新视角合成 Generative Camera Dolly:Extreme Monocular Dynamic Novel View Synthesis 单目动态新视角合成 Generative Camera Dolly: Extreme Monocular Dynamic Novel View Synthesis Generative Camera Dolly: Extreme Monocular Dynamic Novel View Synth…...
STM32--IO引脚复用
IO引脚复用...
Python字符串及正则表达式(十):字符串常用操作、字符串编码转换
前言:在编程的世界里,字符串无处不在。它们是构建用户界面、存储数据、进行通信的基础元素。无论是财务系统的总账报表、电子游戏的比赛结果,还是火车站的列车时刻表,这些信息最终都需要以文本的形式呈现给用户。这些文本的背后&a…...
前端的Python入门指南(完):错误和异常处理策略及最佳实践
《前端的 Python 入门指南》系列文章: (一):常用语法和关键字对比(二):函数的定义、参数、作用域对比(三):数据类型对比 - 彻底的一切皆对象实现和包装对象异…...
LeetCode 2475 数组中不等三元组的数目
问题描述: 给定一个下标从 0 开始的正整数数组 nums,我们的目标是找出并统计满足下述条件的三元组 (i, j, k) 的数目: 0 < i < j < k < nums.length,这确保了三元组索引的顺序性。nums[i]、nums[j] 和 nums[k] 两…...
【和春笋一起学C++】字符串比较
目录 C语言字符串比较 C语言字符比较 C字符串比较 C语言字符串比较 在C语言中用于比较字符串的函数为strcmp函数,该函数定义在头文件<string.h>中,是一个标准库函数。strcmp函数的工作原理是逐字符比较两个字符串,直到找到不同的字符…...
HTTP 协议报文结构 | 返回状态码详解
注:本文为 “HTTP 历史 | 协议报文结构 | 返回状态码” 相关文章合辑。 未整理去重。 HTTP 历史 wangjunliang 最后更新: 2024/3/16 上午10:29 超文本传输协议(英语:HyperTextTransferProtocol,缩写:HTTP)是 万维网(World Wide Web)的基础协议。自 蒂姆…...
.net winform 实现CSS3.0 泼墨画效果
效果图 代码 private unsafe void BlendImages1(Bitmap img1, Bitmap img2) {// 确定两个图像的重叠区域Rectangle rect new Rectangle(0, 0,Math.Min(img1.Width, img2.Width),Math.Min(img1.Height, img2.Height));// 创建输出图像,尺寸为重叠区域大小Bitmap b…...
LearnOpenGL学习(高级OpenGL - - 实例化,抗锯齿)
实例化 对于在同一场景中使用相同顶点数据的对象(如草地中的草),可以使用实例化(Instancing)技术,用一个绘制函数让OpenGL绘制多个物体,而非循环(Drawcall: N->1)。 …...
大数据与AI:从分析到预测的跃迁
引言:数据时代的新纪元 从每天的社交分享到企业的运营决策,数据早已成为现代社会不可或缺的资源。我们正置身于一个数据爆炸的时代,数以亿计的信息流实时生成,为人类带来了前所未有的洞察能力。然而,数据的价值并不仅限…...
【CC2530开发基础篇】继电器模块使用
一、前言 1.1 开发背景 本实验通过使用CC2530单片机控制继电器的吸合与断开,深入了解单片机GPIO的配置与应用。继电器作为一种常见的电气控制元件,广泛用于自动化系统中,用于控制大功率负载的开关操作。在本实验中,将通过GPIO口…...
C05S07-Tomcat服务架设
一、Tomcat 1. Tomcat概述 Tomcat也是一个Web应用程序,具有三大核心功能。 Java Servlet:Tomcat是一个Servlet容器,负责管理和执行Java Servlet、服务端的Java程序,处理客户端的HTTP请求和响应。Java Server:服务端…...
Java stream groupingBy sorted 实现多条件排序与分组的最佳实践
1. 数据初始化 这一部分代码用于创建 Product 对象并将它们添加到 result 列表中。 // 初始化数据 List<Product> result new ArrayList<>(); List<Product> resp new ArrayList<>();// 添加产品数据 result.add(new Product("手机A", 1…...
JAVA:代理模式(Proxy Pattern)的技术指南
1、简述 代理模式(Proxy Pattern)是一种结构型设计模式,用于为其他对象提供一种代理,以控制对这个对象的访问。通过代理模式,我们可以在不修改目标对象代码的情况下扩展功能,满足特定的需求。 设计模式样例:https://gitee.com/lhdxhl/design-pattern-example.git 2、什…...
爬取Q房二手房房源信息
文章目录 1. 实战概述2. 网站页面分析3. 编写代码爬取Q房二手房房源信息3.1 创建项目与程序3.2 运行程序,查看结果 4. 实战小结 1. 实战概述 本次实战项目旨在通过编写Python爬虫程序,抓取深圳Q房网上的二手房房源信息。我们将分析网页结构,…...
Youtu-VL-4B-Instruct效果展示:高清OCR+精准Box定位+多轮图文对话作品集
Youtu-VL-4B-Instruct效果展示:高清OCR精准Box定位多轮图文对话作品集 1. 引言:当“看图说话”进化成“看图办事” 你有没有遇到过这种情况?看到一张复杂的图表,想快速提取里面的数据,却要手动一个个去数;…...
【2026年最新600套毕设项目分享】springboot足球训练营系统(14309)
有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告/任务书)远程调试控屏包运行一键启动项目&…...
OpenClaw安全方案:百川2-13B-4bits量化模型的本地化数据边界
OpenClaw安全方案:百川2-13B-4bits量化模型的本地化数据边界 1. 为什么我们需要本地化数据边界 去年我在帮一家初创公司做财务自动化方案时,遇到一个棘手问题:他们需要分析包含客户银行账号的Excel报表,但公司严格禁止数据上传到…...
OpenClaw小团队协作:千问3.5-35B-A3B-FP8共享技能库搭建
OpenClaw小团队协作:千问3.5-35B-A3B-FP8共享技能库搭建 1. 为什么我们需要共享技能库 去年冬天,我们团队在尝试用OpenClaw自动化周报生成时遇到了一个典型问题——每个人都在重复造轮子。小王写了个飞书日程抓取脚本,小李开发了Git提交记录…...
基于GA - XGBoost的时间序列预测:抑制过拟合与参数优化
基于遗传算法优化算法优化XGBoost(GA-XGBoost)的时间序列预测 GA-XGBoost时间序列 采用交叉验证抑制过拟合问题 优化参数为迭代次数、最大深度和学习率 matlab代码,注:暂无Matlab版本要求 -- 推荐 2016B 版本及以上 注:采用 XGBoost 工具箱&a…...
seo优化机构怎样选择才合适_什么是seo优化机构
SEO优化机构怎样选择才合适_什么是SEO优化机构 在当今的数字化时代,拥有一个高效的网站已经不再是企业竞争力的唯一标准,更重要的是这个网站能够在搜索引擎上获得良好的排名。这就是搜索引擎优化(SEO)的重要性所在。选择一个合适…...
Arduino嵌入式SD卡逐行读取库ReadLines详解
1. 项目概述ReadLines 是一个专为 Arduino 平台设计的轻量级文件行读取库,核心目标是解决嵌入式系统中对 SD 卡文本文件进行逐行解析这一高频但易出错的操作需求。在资源受限的 MCU 环境下(如 ESP8266、STM32F103C8T6、ATmega328P)࿰…...
Vue 组态化管道流动效果:从零构建现代化流体模拟系统
1. 为什么需要管道流动模拟系统 在工业自动化和教学演示领域,可视化管道系统是一个常见需求。想象一下化工厂的液体输送管道、城市供水系统或者实验室的流体实验装置,这些场景都需要直观展示流体在管道中的流动状态。传统做法是使用静态图片或简单动画&a…...
Linux远程连接工具评测与选型指南
1. Linux远程连接工具概述作为一名嵌入式Linux开发者,我每天都需要通过远程连接工具访问各种开发板和服务器。在多年的实践中,我尝试过市面上几乎所有主流的远程终端工具,深知每款工具的特点和适用场景。选择一款合适的远程连接工具ÿ…...
个人 AI 助理——打造你的第二大脑
个人 AI 助理——打造你的第二大脑摘要:信息过载时代,个人 AI 助理不再是奢侈品,而是必需品。本文教你如何搭建专属 AI 助理,实现信息管理、知识沉淀、决策辅助的智能化,让 AI 成为你的"第二大脑"。一、为什…...
