windows openssl编译x64版libssl.lib,编译x64版本libcurl.lib,支持https,vs2015编译器

news/2024/12/22 8:21:53/

不要纠结,直接选择用perl编译!

告诫想要用弄成vs编译版的,暂时先别给自己增加麻烦

告诫,以下执行的每一步,都不要纠结

先安装环境

  1. nasm 64位版本 https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/win64/nasm-2.16.01-installer-x64.exe
  2. perl 64位版本
    我用的是 https://www.activestate.com/platform/supported-languages/perl/,
    也可以使用 https://strawberryperl.com/
  3. 我使用的是Windows VS2015编译器,编译器的安装就不多说了。

配置环境变量,也就是把perl和nasm的bin路径添加到环境变量path中。
在cmd中使用【perl -v】,可以验证perl是否安装成功

目标

  1. windows环境,vs2015编译器,x64,编译libcurl静态库
  2. libcurl支持https

可能的疑问

nghttp2目录是干啥用的:用于支持http/2,如果不需要用到http/2,完全可以忽略,我在下文只会顺带提几句编译支持http/2的方法。

基础条件【磨刀不误砍柴工】

  1. 为了不会混乱,我就直接在桌面上创建了一个目录,存在相关代码和生成的库,基础路径【C:\Users\MR\Desktop\openssl_20241216】,每个人的电脑桌面路径不一样,不用纠结。openssl下载地址:https://openssl-library.org/source/,curl下载地址:https://github.com/curl/curl.git,这些地址可能会变,不用纠结,如果用不了,自己上网搜索就行。

  2. 以下是我的目录结构:curl目录是从git拉取curl代码的目录,curl_static可以忽视,我自己创建的用于存放即将生成的库,等会儿在编译的时候,会自动生成。deps目录,以及内部的子目录,先创建,不用问为什么。
    https://i-blog.csdnimg.cn/direct/4ce2c15d8d1b4e6792d0002e49566c0b.png" alt="在这里插入图片描述" />https://i-blog.csdnimg.cn/direct/b9a601bea1604ca592b1a1d3fe2f408e.png" alt="在这里插入图片描述" />https://i-blog.csdnimg.cn/direct/c750405e3f54476caea6904c48f9a879.png" alt="在这里插入图片描述" />https://i-blog.csdnimg.cn/direct/1eb363f84e4849719761dcdf6b16f171.png" alt="在这里插入图片描述" />

openssl_30">编译openssl

  1. 下载源码,尽可能是最新版本的,因为低版本的源码编译出来的库,一些接口可能不支持。
https://github.com/openssl/openssl
  1. 关键步骤:在开始菜单中,找到【VS2015 x64 本机工具命令提示符】,使用管理员权限运行,打开cmd界面。
    https://i-blog.csdnimg.cn/direct/8b173b5c8b984eb4b9f7b913a961f154.png" alt="在这里插入图片描述" />
  2. 关键步骤:在cmd,切记,这是在上一步中,用管理员身份打开的cmd中操作https://i-blog.csdnimg.cn/direct/feb7ae022d7644baa18e1ecf24962b8a.png" alt="在这里插入图片描述" />
  3. 关键步骤:用perl编译openssl静态库,no-shared 表示编译静态库,VC-WIN64A 是x64,之后就是漫长的编译等待。
    https://i-blog.csdnimg.cn/direct/f404dbe1223a4374a9c8f6e2289a1ff0.png" alt="在这里插入图片描述" />5. openssl没有指定生成目录,我这边默认是生成到 【C:\Program Files\OpenSSL】https://i-blog.csdnimg.cn/direct/d16e0c3a996e4c738b218eca94093d59.png" alt="在这里插入图片描述" />https://i-blog.csdnimg.cn/direct/715c6f9052254190920a0653d993019b.png" alt="在这里插入图片描述" />https://i-blog.csdnimg.cn/direct/df0bfad9b3524c28b7fb49f6144c82f3.png" alt="在这里插入图片描述" />
  4. 把生成的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】
    https://i-blog.csdnimg.cn/direct/81feb03467694b4d8cafdf8aea8c3c45.png" alt="在这里插入图片描述" />https://i-blog.csdnimg.cn/direct/b39e53c5d1654323bf3787c861475f8e.png" alt="在这里插入图片描述" />
  5. 关键步骤
一些可能用到的语句,可以先忽略
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

http://www.ppmy.cn/news/1557148.html

相关文章

28、论文阅读:基于像素分布重映射和多先验Retinex变分模型的水下图像增强

A Pixel Distribution Remapping and Multi-Prior Retinex Variational Model for Underwater Image Enhancement 摘要介绍相关工作基于模型的水下图像增强方法:无模型水下图像增强方法:基于深度学习的水下图像增强方法: 论文方法概述像素分布…

Redis基础(1)--基本全局指令与架构

1. 基本全局命令 Redis有5种数据结构,但它们都是键值对中的值,对于键来说有⼀些通用的命令。 1.1KEYS 返回所有满足样式(pattern)的key。支持如下统配样式。 h?llo 匹配 hello , hallo 和hxlloh*llo 匹配 hllo 和 heeeelloh[…

Python解释器和PyCharm详解

目录 1.什么是Python解释器? Python解释器的类型和特性 Python解释器的优势 2.什么工具可以写Python文件? 3.为什么Python解释器和PyCharm不在同一个网站? 1.什么是Python解释器? Python解释器‌是Python程序运行的核心,它的主要作用是将Python代码转换为…

【Linux开发工具】版本控制器git

🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:Linux 🌹往期回顾🌹:【Linux开发工具】自动化构建-make/Makefile 🔖流水不争,争的是滔滔不 一、git简介二、…

简单工厂模式和策略模式的异同

文章目录 简单工厂模式和策略模式的异同相同点:不同点:目的:结构: C 代码示例简单工厂模式示例(以创建图形对象为例)策略模式示例(以计算价格折扣策略为例)UML区别 简单工厂模式和策…

stm32进硬件错误怎么回事

STM32进入硬件错误状态,通常是由一些特定的编程或硬件问题引起的。以下是一些可能的原因及相应的解决方法: 可能的原因 数组越界操作:在编程过程中,如果数组访问超出了其定义的边界,可能会导致内存访问错误&#xff0…

电脑提示ntdll.d缺失是什么原因?不处理的话会怎么样?ntdll.dll文件缺失快速解决方案来啦!

电脑提示ntdll.dll缺失:原因、影响与解决方案 在日常的电脑使用中,我们偶尔会遇到一些令人困惑的系统错误,其中“ntdll.dll缺失”便是较为常见的一种。作为软件开发从业者,我深知这一错误给用户带来的不便,因此&#…

人脸修复与增强腾讯开源项目GFPGAN介绍

GFPGAN 简述 GFPGAN (Generative Facial Prior GAN) 是一种基于生成对抗网络(GAN)的面部图像修复与增强模型。它由腾讯 ARC Lab 的研究团队开发,目的是以高效和高质量的方式修复低分辨率、受损或老化的人脸图像,同时保留其真实感和…