win10编译openssl

news2025/1/18 20:22:03

环境

Win10 64位
VS2022
openssl      3.3.0
nasm      NASM version 2.16.01 compiled on Dec 21 2022
perl      strawberry-5.38.2.2

环境变量设置

  • perl加入到环境变量,略过
  • nasm加入到环境变量
  • vs的nmake加入到环境变量
    我的nmake位置如下:
    C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\Hostx64\x64
    

操作编译

  • step1 环境配置:打开cmd,进入到目录 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build

    • 编译64位版本执行:vcvarsall.bat x64
    • 编译32位版本执行:vcvarsall.bat x64_x86
  • step2 进入到openssl源码目录,我的如下:D:\dev\openssl-openssl-3.3.0\openssl-openssl-3.3.0

  • step3 配置编译32还是64位

    • 32位:perl Configure VC-WIN32 no-asm --prefix=D:\xxx\openSSL32 --openssldir=D:\xxx\ssl32
    • 64位:perl Configure VC-WIN64A no-asm --prefix=D:\xxx\openSSL --openssldir=D:\xxx\ssl
  • step4 编译 nmake

  • step5 安装 nmake install ,之后会将lib和dll放到prefix参数配置的目录下

错误记录

1、不能直接打开cmd,进入到openssl源码目录执行配置,否则会找不到vs自带的一些头文件,或报如下错误

Microsoft (R) 程序维护实用工具 14.16.27048.0 版
版权所有 (C) Microsoft Corporation。  保留所有权利。

        "cl"  /Zi /Fdossl_static.pdb /Gs0 /GF /Gy /MD /W3 /wd4090 /nologo /O2 -I"." -I"include" -I"apps\include" -D"L_ENDIAN" -D"OPENSSL_PIC" -D"OPENSSLDIR=\"D:\\dev\\openssl-openssl-3.3.0\\output\\ssl\"" -D"ENGINESDIR=\"D:\\dev\\openssl-openssl-3.3.0\\output\\openSSL\\lib\\engines-3\"" -D"MODULESDIR=\"D:\\dev\\openssl-openssl-3.3.0\\output\\openSSL\\lib\\ossl-modules\"" -D"OPENSSL_BUILDING_OPENSSL" -D"OPENSSL_SYS_WIN32" -D"WIN32_LEAN_AND_MEAN" -D"UNICODE" -D"_UNICODE" -D"_CRT_SECURE_NO_DEPRECATE" -D"_WINSOCK_DEPRECATED_NO_WARNINGS" -D"NDEBUG"   -c /Foapps\lib\libapps-lib-app_libctx.obj "apps\lib\app_libctx.c"
app_libctx.c
D:\dev\openssl-openssl-3.3.0\openssl-openssl-3.3.0\include\openssl/types.h(26): fatal error C1083: 无法打开包括文件: “limits.h”: No such file or directory
NMAKE : fatal error U1077: “"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64\cl.EXE"”: 返回代码“0x2”
Stop.
NMAKE : fatal error U1077: “"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64\nmake.exe"”: 返回代码“0x2”
Stop.

解决方式1:开始菜单中找到vs,可以看到有很多环境设置,实际上也是调用脚本vcvarsall.bat设置环境
在这里插入图片描述

方案2:进入 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build,执行vcvarsall.bat ,这个会更灵活,还能编译arm版本的库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1682398.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Unity Shader入门精要 第7章】基础纹理(二)

除了用于直接表示物体表面颜色,纹理的另外一种常见用法是用来进行凹凸映射,在不增加顶点的情况下,通过纹理来提供额外的法线信息,从而在视觉上增加表面凹凸细节,丰富渲染表现。 最常用的两种凹凸映射为法线贴图和高度…

【C语言每日题解】用函数来模拟实现strlen()、strcpy()、strcmp()、strcat()

🥰欢迎关注 轻松拿捏C语言系列,来和 小哇 一起进步!✊ 学习了函数后,老师让我们用函数来实现上面这四个字符串函数。 我们首先来了解一下这四个字符串函数: 1.strlen函数 用于获取字符串长度(不包括末尾…

用Rust构造一个人员基本信息的实体类,输出json测试结果

目录 一、需求说明 二、知识点 serde 一、需求说明 需求描述:用Rust写一个人员基本信息的实体类, 包括编号、姓名、描述、性别、备注、照片、简历等,加上3条测试数据,输出为json。 cargo add serde serde { version "1.0.201"…

SVN切换账号

SVN切换账号 有这么一种情况,对于一个新项目,项目紧急的情况下,大家会使用一个svn账号下载代码,开始提前熟悉业务。那么当正式开发的时候,每个人的svn账号也已经下发下来了,这个时候大家就需要切换成自己的…

Jquery+Servlet+JDBC实现登录注册功能

前端部分 HTMLCSS部分 引入JQuery包和JQuery.cookie包,前者封装了DOM操作的一些方法,后者封装了对cookie的操作 我们使用cookie主要是为了做登录后页面的跳转时,能存下来这个用户是谁,这样后面可以对单一用户进行操作&#xff…

嵌入式学习-PWM输出比较

简介 PWM技术 输出比较框图介绍 定时器部分 比较器控制部分 输出控制部分 相关寄存器

使用screen窗口在Autodl服务器训练网络

无法使用鼠标滚轮来查看历史输出的消息 vim ~/.screenrc 按i插入 termcapinfo xterm* ti:te 按esc :wq 保存screen创建的会话中,无法使用鼠标滚轮来查看历史输出的消息 解决方法_screen查看历史输出-CSDN博客无法使用鼠标滚轮查看screen会话历史,解决方…

证件照尺寸标准大小及用途介绍

在日常生活中,证件照是我们不可或缺的一部分,无论是办理身份证、驾驶证,还是参加考试、求职,都需要用到不同尺寸和底色的证件照。本文将为您详细介绍证件照的尺寸标准、用途以及底色的选择。 一、证件照的尺寸标准证件照的尺寸通…

【错题集-编程题】小红的ABC(字符串 + 找规律)

牛客对应题目链接:小红的ABC (nowcoder.com) 一、分析题目 算法思路:由于题目要找的是最短的回文子串,并且只有三个字母:a、b、c,因此最短的回文子串的长度要么是 2,要么是 3。因此,我们仅需枚举…

如何重启Windows系统上的Mysql服务

很久很久之前,我想把我的一台windows笔记本当比服务使用,当时还没有搞wsl, 试了vmware在局域网内总是断连。然后就直接在 windows系统上装了一个 windows版本的Mysql81。 有一天需要修改最大连接数, 费了挺大的劲终于找到了配置文件 my.ini…

“碳”索不止

2023年,欧盟宣布将在未来实施CBAM(碳边境调节机制),也称为碳关税,是一种针对进口货物的碳排放定价政策工具。该机制要求在欧盟境内的进口商对其进口产品支付相应的碳排放费用,以弥补其生产过程中产生的碳排…

K8S认证 | CKA题库 + 答案 | 查看Pod CPU资源使用量

2、查看集群中运行Pod CPU资源使用量 您必须在以下Cluster/Node上完成此考题: Cluster Master node Worker node k8s …

6.概率论

概率论在深度学习中也有着广泛的应用。由于深度学习模型通常包含大量的参数和复杂的结构,因此在实际应用中很难直接找到最优解。此时,我们可以利用概率论中的相关概念和方法,如贝叶斯推断、最大似然估计等,来估计模型的参数或评估…

【环境监测与分析】-环境检测过程案例

一.方案背景 空气质量检测,是指对空气质量的好坏进行检测。空气质量的好坏反映了空气中污染物浓度的高低。空气污染是一个复杂的现象,在特定时间和地点空气污染物浓度受到许多因素影响。来自固定和流动污染源的人为污染物排放大小是影响空气质量的最主要…

win11安装SQL Server 2012 企业版

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、硬件要求二、软件安装问题参考&#…

国外站群服务器如何提高seo排名

很多seo网站优化会选择国外站群服务器,那么国外站群服务器如何提高seo排名,具体方式有哪些?Rak部落小编为您整理发布国外站群服务器如何提高seo排名。 国外站群服务器可以通过以下几种方式提高网站在搜索引擎中的排名: - **内容分发与加速**…

持续拥抱鲲鹏生态 星辰天合深化信创存储能力

近日,鲲鹏昇腾开发者大会与广电五舟“2024 智算中国行”北京站陆续召开,星辰天合持续拥抱鲲鹏生态,以重要的合作伙伴身份受邀参加,并在鲲鹏昇腾开发者大会上荣获“甄选解决方案最佳应用软件奖”,在广电五舟“2024 智算…

USB2.0协议解读

一、说明 本文以Universal Serial Bus Specification Revision 2.0 April 27, 2000内容为准。 USB2.0支持三种速率,High speed(480Mb/s500ppm)、Full speed(12Mb/s2500ppm)以及Low speed(1.5Mb/s1.5%&…

JUnit5测试用例

1.用Test注解表示为测试方法 2.使用DisplayName定义别名 3.使用Assertions类的断言方法 使用断言,可以判断方法的实际执行结果和预期结果是否一致 assertEqualsassertTureassertNotNullassertAllassertThrows 下图是预期与实际不同时报错图 4.使用BeforeEach注解&…

分析人工智能在智慧银行服务中的实际应用以及面临的挑战

一、引言 近年来,人工智能(AI)技术快速发展,其在金融领域,特别是智慧银行服务中的应用日益广泛。人工智能以其独特的数据处理能力、预测分析能力以及自动化决策能力,极大地提升了智慧银行的服务效率、降低了运营成本,并优化了客户体验。然而,人工智能在智慧银行服务中…