Windows 下OpenSSL安装过程及错误解决办法_发呆的程序猿-程序员ITS304_openssl

技术标签: OpenSSL  

Windows下使用OpenSSL有两种方式:
一.直接下载别人编译好的安装包:http://slproweb.com/products/Win32OpenSSL.html
二.自己编译安装:
1.下载并安装perl
http://www.activestate.com/activeperl/downloads/
2.安装与配置:
直接运行安装文件(例如:ActivePerl-5.16.3.1604-MSWin32-x86-298023.msi)即可完成安装;安装过程将自动完成环境变量的配置(安装完成之后,可以在系统环境变量里看到perl的bin目录(例如: C:\Program Files\perl\site\bin;)已经被加入进来),无需再手工配置;
3.测试安装是否成功:
进入perl安装目录的eg文件夹,执行“perl example.pl”若显示“Hello from ActivePerl!”,则说明Perl安装成功。如下图所示:
这里写图片描述
perl安装成功之后就可以开始使用Perl的相关命令来进行OpenSSL的安装了。
4.openssl可以自己下载源码编译也可以直接下载安装包安装完之后即可使用。
5.使用源码编译openssl
1) 下载openssl源码的路径:
http://www.openssl.org/source/
2)配置VS2012的环境变量(因为后面编译openssl时,将会用到vs2012自带的nmake工具)。
执行VS2012的bin目录下(例如:E:\Visuol Studio 2012\VC\bin)的vcvars32.bat文件即可完成配置,我的因为配置完了什么都不显示了。就不截图了。
3)配置openssl
以下是我在网上找到的配置OpenSSL的方法,这里我上链接吧:https://blog.csdn.net/houjixin/article/details/25806151

这里写图片描述
这里写图片描述
这里写图片描述

注意:

我按照他的方法进行操作,出现两种错误,
1.

tmp32dll\sha1-586.asm(1432) : error A2070:invalid instruction operands
tmp32dll\sha1-586.asm(1576) : error A2070:invalid instruction operands
NMAKE : fatal error U1077: “"E:\Visuol Studio 2012\VC\BIN\cl.EXE"”: 返回代码“0x1”

2.

tmp32dll\sha1-586.asm(1432) : error A2070:invalid instruction operands
tmp32dll\sha1-586.asm(1576) : error A2070:invalid instruction operandsN
MAKE : fatal error U1077: “"E:\Visuol Studio 2012\VC\BIN\cl.EXE"”: 返回代码“0x2”

废了九牛二虎之力才找到了解决的方法,
针对第一种错误的解决方法是:禁用汇编

perl Configure VC-WIN32 no-asm

第二种错误的解决方法为:这个在openssl官方网站上找到了,方法是禁用IPV6
可以参考:http://rt.openssl.org/Ticket/Display.html?id=2097&user=guest&pass=guest

perl Configure VC-WIN32 -DOPENSSL_USE_IPV6=0

最终我改成了:

perl Configure VC-WIN32 -DOPENSSL_USE_IPV6=0 no-asm

到这里很开心啊,刷刷的一直在编译,说明成功啦,duangduangduang,结果出现了:

  link /nologo /subsystem:console /opt:ref /debug /dll /out:out32dll\libeay32.dll /def:ms/LIBEAY32.def @C:\Users\ADMINI~1\AppData\Local\Temp\nmE10C.tmp
   正在创建库 out32dll\libeay32.lib 和对象 out32dll\libeay32.exp
cryptlib.obj : error LNK2019: 无法解析的外部符号 _OPENSSL_ia32_cpuid,该符号在函数 _OPENSSL_cpuid_setup 中被引用
cryptlib.obj : error LNK2001: 无法解析的外部符号 _OPENSSL_ia32cap_P
md5_dgst.obj : error LNK2019: 无法解析的外部符号 _md5_block_asm_data_order,该符号在函数 _MD5_Final 中被引用
sha1dgst.obj : error LNK2019: 无法解析的外部符号 _sha1_block_data_order,该符号在函数 _SHA1_Final 中被引用
sha256.obj : error LNK2019: 无法解析的外部符号 _sha256_block_data_order,该符号在函数 _SHA256_Final 中被引用
sha512.obj : error LNK2019: 无法解析的外部符号 _sha512_block_data_order,该符号在函数 _SHA512_Final 中被引用
out32dll\libeay32.dll : fatal error LNK1120: 6 个无法解析的外部命令
NMAKE : fatal error U1077: “"E:\Visuol Studio 2012\VC\BIN\link.EXE"”: 返回代码“0x460


这就很蛋疼啊,但是我还是没有放弃,这个问题我觉得不是很难解决。后来我在百度上找到了这样一篇文章:https://blog.csdn.net/mfcing/article/details/43059105,其实跟出现的这个错误并没有什么相关联的,但是我看到了一条这样的代码:

测试动态库:
    nmake -f ms\ntdll.mak test
    测试静态库:
    nmake -f ms\nt.mak test

    安装动态库:
    nmake -f ms\ntdll.mak install
    安装静态库:
    nmake -f ms\nt.mak install

    清除上次动态库的编译,以便重新编译:
    nmake -f ms\ntdll.mak clean
    清除上次静态库的编译,以便重新编译:
    nmake -f ms\nt.mak clean

我就在想是不是跟我之前编译过了一次有关系?于是我敲了:

nmake -f ms\ntdll.mak clean

再从头来了一遍

1.perl Configure VC-WIN32 -DOPENSSL_USE_IPV6=0 no-asm
2.ms\do_ms.bat
3.nmake -f ms\ntdll.mak

刷刷刷刷刷刷。。。。。。。。。。等了一分多钟,,,终于可以了!
这里写图片描述

我又执行了一下nmake -f ms\ntdll.mak test 测试了一下。

这里写图片描述

说明:本次测试在WIN10 64 VS2012 openssl-1.0.2o 版本测试成功,其他情况并不确保成功。如有问题,请联系博主。小弟尽量帮解决。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xuebing1995/article/details/80004638

智能推荐

DCMTK开发笔记(一):我的第一个DCMTK demo_CaLMdoWN_的博客-程序员ITS304_dcmtk

实验平台Visual Studio 2010已编译的 DCMTK 3.6.2 Debug x64版本实验步骤在VS2010中新建Visual C++ Win32 控制台应用程序 空项目,命名为DcmtkDemo在源文件中添加新建项 .cpp文件,命名为main.cpp粘贴如下测试代码#include <stdio.h>#include <tchar.h>...

如何使用pycharm在工程中新建venv环境--(venv 三)_绛洞花主敏明的博客-程序员ITS304_pycharm venv

问题:使用pycharm打开从git上下载的项目后,会发现项目实际上中并不存在项目需要的环境,此时,就需要根据项目中的requirement.txt文件新建环境。实现步骤一、首先使用pycharm打开项目,发现项目中不存在venv环境。二、file --> setting --> project --> project interpreter --> 新建环境...

unity 监听build前、build完成后事件_凡情的博客-程序员ITS304

using System.Collections;using System.Collections.Generic;using System.IO;using UnityEditor;using UnityEditor.Build;using UnityEditor.Callbacks;using UnityEngine;// 实现接口的方式public class BuildReport:IPostprocessBuildWithReport,IPreprocessBuildWithRe

Webapi之文件上传_Song_Lynn的博客-程序员ITS304_webapi 文件上传

Webapi之文件上传范例说明:前端:vue.js + element-ui + axios后端:c# webapi先上传存储起来,然后再读取文件仅尝试过在本地调试,未验证服务器前端部分使用element-ui的上传组件// html 直接调用api<el-upload class="upload-demo" ref...

java中Scanner类nextLine()和next()的使用方法和注意事项_羽涵w的博客-程序员ITS304_scanner.nextline

Scanner实现字符串的输入有两种方法,一种是next(),一种nextLine()。next():一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。简单地说:next()查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息,所以next方法不能得到带空格的字符串。nextLine(

React-native 安装基础篇_srxboys的博客-程序员ITS304_安装reactnative基础库

React-native 安装基础篇 RN官方文档 (0.55): - http://facebook.github.io RN 中文翻译 文档 (0.51): - https://reactnative.cn 推荐博客 ES6 语法学习(阮一峰) - http://es6.ruanyifeng.com以下基于MacOS 一...

随便推点

20篇参考文献_weixin_30254435的博客-程序员ITS304

1.基于JSP的中小型酒店管理系统的设计与实现2.基于Web的酒店管理系统的设计与实现3.基于Java的酒店管理系统设计4.基于JSP的酒店信息管理系统的设计与实现5.宾馆管理系统设计与实现6.基于Java的小型宾馆管理系统设计与实现7.中小型宾馆客房管理系统的设计与实现8.基于UML的宾馆管理系统的设计与实现9.酒店管理系统的设计与实现10.酒店管理系统的设计与实现11.基于...

Mobile Service(滚动dp)_luckymik的博客-程序员ITS304

问题 B: Mobile Service时间限制:1 Sec内存限制:128 MB提交:21解决:9题目描述一个公司有三个移动服务员。如果某个地方有一个请求,某个员工必须赶到那个地方去(那个地方没有其他员工),某一时刻只有一个员工能移动。被请求后,他才能移动,不允许在同样的位置出现两个员工。从p到q移动一个员工,需要花费c(p,q)。这个函数没有必要对称,但是c(p,...

IP协议介绍_杜某1997的博客-程序员ITS304_ip协议解决什么问题

1、IP协议解决的问题实际的互联网络是错综复杂的,物理设备通过使用IP协议,屏蔽了物理网络之间的差异,网络中的主机使用IP协议连接时,就无需关注网络细节。1、使复杂的实际网络变成一个虚拟互联网络。2、使网络层可以屏蔽掉底层细节,专注于网络层的数据转发。3、解决了在虚拟网络中数据报传输路径的问题。2、IP数据报在物理层中传输的数据是比特流,在数据链路层中将数据封装成帧,在网络层中将帧数据表示成IP数据报。IP数据报分为IP首部和IP数据报的数据。其中IP首部是重点学习内容。4位版本号:指I

全国地区对应身份证号码值关系----身份证号前6位_花言简的博客-程序员ITS304

省份码值 省份 城市码值 城市 县级 县级 11 北京市 1100 北京市 110000 北京市 11 北京市 1101 北京市市辖区 110101 东城区 11 北京市 1101 北京市市辖区 110102 西城区 11 北京市 1101 北京...

C# WinAPI 编程详解(一)_yang_B621的博客-程序员ITS304_c# winapi

C# WIN32 API编程最近要实现一个微信/QQ自动定时发送推送的小工具 ,用到API编程,下面一起开始学习Win32 API编程吧!!!C# 用户经常提出2两个问题:“我为什么要另外编写代码来使用内置于Windows中的功能?在框架中为什么没有相应的内容可以让我们直接完成这一任务呢?”当框架小组构建它们的.NET部分时,他们评估了为使.NET程序猿可以使用Win32...

推荐文章

热门文章

相关标签