您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

windows 编译openssl

时间:2020-08-10 16:42:22  来源:  作者:

一、windows vs2015 编译openssl

1,到openssl官网下载源码。

2,安装ActivePerl,去官网(https://www.activestate.com/products/activeperl/downloads/)下载安装。

ActivePerl具体安装步骤参考:https://blog.csdn.net/MarsLee_U/article/details/86491759

3.安装完毕后,使用 VS2015 下的 VS2015开发者命令提示,进入控制台模式。

windows 编译openssl

 

4.进入openssl源码目录,调用命令:perl Configure VC-WIN32 shared no-shared no-asm --prefix="E:/work/openssl-1.1.0c/win64-release" --openssldir="E:/work/openssl-1.1.0c/win64-release/ssl"

其中,E:/work/openssl-1.1.0c路径是源码目录, win64-release是输出目录, no-shared表示导出静态库, 可以改成shared导出动态库,shared no-shared 表示导出动态库和静态库, VC-WIN32表示32位库, 可以改成VC-WIN64A编译64位。

5.编译Openssl。

msdo_nasm

nmake -f msntdll.mak

nmake -f msntdll.mak test

nmake -f msntdll.mak install

nmake -f msntdll.mak clean

说明,如果要编译静态库就使用nt.mak,具体命令如下:

msdo_nasm 生成makefile文件;

nmake -f msntdll.mak 表示编译动态库;

nmake -f msnt.mak 表示编译静态库;

nmake -f msntdll.mak test 表示测试编译后的lib动态库是否有问题;

nmake -f msnt.mak test 表示测试编译后的lib静态库是否有问题;

nmake -f msntdll.mak install 表示安装头文件和动态库文件到前面指定的位置;

nmake -f msnt.mak install 表示安装头文件和静态库文件到前面指定的位置;

nmake -f msntdll.mak clean 表示清除上次动态库的编译,以便重新编译。

nmake -f msnt.mak clean 表示清除上次静态库的编译,以便重新编译。

6.等待编译完毕后,在win64-release目录下会生成lib文件夹和include文件夹。

7.测试编译的Openssl-1.1.0f

命令:nmake test

二、编译过程中问题

1.Appss_cb.c(803) : error C2027: use of undefined type 'in6_addr'

.appss_cb.c(803) : see declaration of 'in6_addr'

.appss_cb.c(836) : error C2027: use of undefined type 'in6_addr'

.appss_cb.c(836) : see declaration of 'in6_addr'

.appss_cb.c(884) : error C2027: use of undefined type 'in6_addr'

.appss_cb.c(884) : see declaration of 'in6_addr'

.appss_cb.c(917) : error C2027: use of undefined type 'in6_addr'

.appss_cb.c(917) : see declaration of 'in6_addr'

NMAKE : fatal error U1077: 'cl' : return code '0x2'

解决方法是禁用IPV6

将原来perl Configure VC-WIN32替换成perl Configure VC-WIN32 -DOPENSSL_USE_IPV6=0

2.ml不是内部或外部命令,也不是可运行的程序或批处理文件

解决方法是 右键点击我的电脑->属性->高级系统设置->环境变量->系统变量中在path中将ml.exe的路径添加进去。例如我的ml.exe的路径是C:masm32bin,就在path中添加C:masm32bin;

3.fatal error LNK1103: debugging information corrupt; recompile module

解决办法是 在敲入 msdo_ms命令后,进入openssl中的ms路径下,找到ntdll.mak文件,将里面所有的/debug都删除掉,然后保存。再使用 VS2015 下的 VS2015开发者命令提示,进入控制台模式进行编译。

4.cversion.c.cryptocversion.c(80) : error C2065: 'cflags' : undeclared identifier

.cryptocversion.c(80) : warning C4047: 'return' : 'const char *' differs in le

vels of indirection from 'int '

NMAKE : fatal error U1077: 'cl' : return code '0x2'

解决:

打开C:1.1.0c(openssl的安装目录)cryptocversion.c

在80行 return(cflags); 改成 return(CFLAGS);

5、error LNK2001: 无法解析的外部符号 ___iob_func 问题解决方法:

方法1:VC2015的头文件中搜索到如下内容(corecrt_wstdio.h),进行替换。

VC2015的头文件中搜索到如下内容(corecrt_wstdio.h)

_ACRTIMP_ALT FILE* __cdecl __acrt_iob_func(unsigned);

#define stdin  (__acrt_iob_func(0))

#define stdout (__acrt_iob_func(1))

#define stderr (__acrt_iob_func(2))

VC2013的头文件中搜索到如下内容()

_CRTIMP FILE * __cdecl __iob_func(void);

#define stdin (&__iob_func()[0])

#define stdout (&__iob_func()[1])

#define stderr (&__iob_func()[2])

方法2:OpenSSL目录下e_os.h文件,增加vs2015过滤。

将下面几行修改,主要是_MSC_VER>=1300修改成_MSC_VER>=1300 && _MSC_VER<1600

修改前:

#    if defined(_MSC_VER) && !defined(_DLL) && defined(stdin)

#      if _MSC_VER>=1300

#        undef stdin

#        undef stdout

#        undef stderr

修改后:

#    if defined(_MSC_VER) && !defined(_DLL) && defined(stdin)

#      if _MSC_VER>=1300 && _MSC_VER<1600

#        undef stdin

#        undef stdout

#        undef stderr


Tags:openssl   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
Telnet 缺乏加密,这使得 OpenSSL 成为连接远程系统的更安全的选择。telnet命令是最受欢迎的网络故障排除工具之一,从系统管理员到网络爱好者都可以使用。在网络计算的早期,teln...【详细内容】
2021-05-13  Tags: openssl  点击:(223)  评论:(0)  加入收藏
为什么要使用ssl加密通讯随着互联网快速发展,网络安全越来越得到人们的关注。谁都不想自己的数据被人窃听或利用,而当我们直接使用TCP连接一个服务器通讯时,此时是明文传输的,...【详细内容】
2021-04-12  Tags: openssl  点击:(333)  评论:(0)  加入收藏
通过 OpenSSL 深入了解密码学的细节:哈希值、数字签名、数字证书等。&bull; 来源:linux.cn &bull; 作者:Marty Kalin &bull; 译者:Xingyu.Wang &bull;(本文字数:11502,阅读时长大...【详细内容】
2021-03-31  Tags: openssl  点击:(231)  评论:(0)  加入收藏
一、windows vs2015 编译openssl1,到openssl官网下载源码。2,安装ActivePerl,去官网(https://www.activestate.com/products/activeperl/downloads/)下载安装。ActivePerl具体安...【详细内容】
2020-08-10  Tags: openssl  点击:(148)  评论:(0)  加入收藏
这本小抄风格的指南提供了 OpenSSL 命令的快速参考,这些命令在常见的日常场景中非常有用。 来源:https://linux.cn/article-12293-1.html 作者:Mitchell Anicas 译者:Xingyu.Wa...【详细内容】
2020-06-08  Tags: openssl  点击:(60)  评论:(0)  加入收藏
想要入门密码学的基础知识,尤其是有关 OpenSSL 的入门知识吗?继续阅读。-- Marty Kalin(作者) 本文是使用 OpenSSL 的密码学基础知识的两篇文章中的第一篇,OpenSSL 是在 Linux...【详细内容】
2020-02-22  Tags: openssl  点击:(92)  评论:(0)  加入收藏
OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。在OpenSSL被曝出现严重安...【详细内容】
2019-12-31  Tags: openssl  点击:(117)  评论:(0)  加入收藏
要生成证书的目录下建立几个文件和文件夹,有./demoCA/ ./demoCA/newcerts/ ./demoCA/private/ ./demoCA/index.txt (空文件,生成证书时会将数据记录写入) ./demoCA/serial (在s...【详细内容】
2019-08-19  Tags: openssl  点击:(409)  评论:(0)  加入收藏
概述:两个计算机在互联网上通信时,它们之间发送的信息如果不经过特殊的处理,即加密机制,很容易被其他人给获取到,如果是普通的信息,那倒是无所谓,但是如果涉及到个人的私密信息,那这...【详细内容】
2019-08-12  Tags: openssl  点击:(287)  评论:(0)  加入收藏
▌简易百科推荐
摘 要 (OF作品展示)OF之前介绍了用python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比...【详细内容】
2021-12-27  项目与数据管理    Tags:Vue   点击:(1)  评论:(0)  加入收藏
程序是如何被执行的&emsp;&emsp;程序是如何被执行的?许多开发者可能也没法回答这个问题,大多数人更注重的是如何编写程序,却不会太注意编写好的程序是如何被运行,这并不是一个好...【详细内容】
2021-12-23  IT学习日记    Tags:程序   点击:(9)  评论:(0)  加入收藏
阅读收获✔️1. 了解单点登录实现原理✔️2. 掌握快速使用xxl-sso接入单点登录功能一、早期的多系统登录解决方案 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器...【详细内容】
2021-12-23  程序yuan    Tags:单点登录(   点击:(8)  评论:(0)  加入收藏
下载Eclipse RCP IDE如果你电脑上还没有安装Eclipse,那么请到这里下载对应版本的软件进行安装。具体的安装步骤就不在这赘述了。创建第一个标准Eclipse RCP应用(总共分为六步)1...【详细内容】
2021-12-22  阿福ChrisYuan    Tags:RCP应用   点击:(7)  评论:(0)  加入收藏
今天想简单聊一聊 Token 的 Value Capture,就是币的价值问题。首先说明啊,这个话题包含的内容非常之光,Token 的经济学设计也可以包含诸多问题,所以几乎不可能把这个问题说的清...【详细内容】
2021-12-21  唐少华TSH    Tags:Token   点击:(9)  评论:(0)  加入收藏
实现效果:假如有10条数据,分组展示,默认在当前页面展示4个,点击换一批,从第5个开始继续展示,到最后一组,再重新返回到第一组 data() { return { qList: [], //处理后...【详细内容】
2021-12-17  Mason程    Tags:VUE   点击:(14)  评论:(0)  加入收藏
什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么时候来进行性能调优?(who) 怎么样进行性能调优?(How) 硬件配...【详细内容】
2021-12-16  软件测试小p    Tags:性能调优   点击:(19)  评论:(0)  加入收藏
Tasker 是一款适用于 Android 设备的高级自动化应用,它可以通过脚本让重复性的操作自动运行,提高效率。 不知道从哪里听说的抖音 app 会导致 OLED 屏幕烧屏。于是就现学现卖,自...【详细内容】
2021-12-15  ITBang    Tags:抖音防烧屏   点击:(23)  评论:(0)  加入收藏
11 月 23 日,Rust Moderation Team(审核团队)在 GitHub 上发布了辞职公告,即刻生效。根据公告,审核团队集体辞职是为了抗议 Rust 核心团队(Core team)在执行社区行为准则和标准上...【详细内容】
2021-12-15  InfoQ    Tags:Rust   点击:(24)  评论:(0)  加入收藏
一个项目的大部分API,测试用例在参数和参数值等信息会有很多相似的地方。我们可以复制API,复制用例来快速生成,然后做细微调整既可以满足我们的测试需求1.复制API:在菜单发布单...【详细内容】
2021-12-14  AutoMeter    Tags:AutoMeter   点击:(20)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条