VS2015编译OpenSSL
概述
OpenSSL 是一个开源的第三方库,它实现了 SSL(Secure SocketLayer)和 TLS(Transport Layer Security)协议,被广泛企业应用所采用。对于一般的开发人员而言,在 Win32 OpenSSL 上下载已经编译好的 OpenSSL 库是省力省事的好办法。对于高级的开发用户,可能需要适当的修改或者裁剪 OpenSSL,那么编译它就成为了一个关键问题。
下面,主要讲述如何在 Windows 上使用VS2015编译 OpenSSL 库,如果需要使用其他版本的VS,可以自行选择对应版本的命令行工具进行编译。
编译环境
1.我这里使用的是Visual Studio 2015,所以首先肯定是需要安装好对应的开发环境了
2.下载并安装ActivePerl
我这里使用的是ActivePerl-5.26.0.2600-MSWin32-x64-403866.ex。
安装完以后,可以使用控制台进入Perl安装目录下的eg,执行 perl example.pl,若是提示 Hello from ActivePerl! 则说明安装Perl成功了。

3.下载并安装NASM汇编器
我这里使用的是nasm-2.13.01-installer-x64.exe
4.下载OpenSSL的源码
可以去官方网站下载
我下的是openssl-1.0.2m.tar.gz
建议使用这个版本,后续新版本可能会导致编译失败。
下载完毕以后,将源码文件解压缩到自己需要编译的地方即可。可以参考INSTALL.W32和INSTALL.W64两个文件,了解编译openSSL的各个步骤。
编译步骤
准备工作做好了,接下来就可以进行具体的编译工作了。
1.打开命令行工具,定位到openSSL源码所在的目录,我这里是E:\opensource\openssl\openssl-1.0.2m
2.配置openSSL相关信息,我这里设置的是将最后编译成功的各种库文件安装到E:\opensource\openssl目录下,因此输入命令行 perl Configure VC-WIN32 --prefix=E:\opensource\openssl

3.执行汇编编译,在命令行中输入 ms\do_nasm

4.选择目标VS版本,我这里使用的是VS2015。将控制台定位置VS2015安装目录\VC\bin,然后执行vcvars32.bat批处理文件,即选择当前版本作为编译程序。

5.将控制台重新定位到openSSL源码所在的目录,这里有两种选择
动态库版本输入
nmake -f ms\ntdll.mak
静态库版本输入
nmake -f ms\nt.mak

编译成功结束以后,会在openSSL源码目录下新生成out32dll文件夹,里面包含了一些动态库和执行文件。
6.检测生成的库是否正确,可以通过执行对应的脚本进行检测
动态库版本输入
nmake -f ms\ntdll.mak test
静态库版本输入
nmake -f ms\nt.mak test
若最终在终端显示 passed all tests 则表示生成的库是正确的

7.编译结束后,可以执行对应的脚本,将openSSL安装到目标位置
动态库版本输入
nmake -f ms\ntdll.mak install
静态库版本输入
nmake -f ms\nt.mak install

执行结束以后,会在第一步设置的安装路径下生成bin、include、lib和ssl四个文件夹
openSSL编译、安装步骤到此结束。
注意
1.以上编译步骤对应的是Release版本,如果需要编译Debug版本,则只需要将第二步中的VC-WIN32修改为debug-VC-WIN32即可
2.若想生成不带会变支持的库,则需要在第二步执行perl Configure VC-WIN32 no-asm --prefix=E:\opensource\openssl,并将第三步改为ms\do_ms即可。
资源备用地址
我将需要的工具放在了百度云盘上,有需要的可以直接从上面获取
地址
提取码 didw
VS2015编译OpenSSL的更多相关文章
- [转]Windows下使用VS2015编译openssl库
转自:http://blog.csdn.net/alger_magic/article/details/52584171 目标:编译vs环境下openssl库 工具: 1. 编译环境win10+vs2 ...
- windows vs2015 编译openssl 1.1.0c
1,到openssl官网下载源码. 2,安装activePerl,我放在网盘:https://pan.baidu.com/s/1ZHe24yRcPtIuSiEa-3oqxw 3.安装完毕后,使用 VS ...
- Win7 下用 VS2015 编译最新 openssl(1.0.2j)包含32、64位debug和release版本的dll、lib(8个版本)
Win7 64位系统下通过VS2015编译好的最新的OpenSSL(1.0.2j)所有八个版本的链接库, 包含以下八个版本: 1.32位.debug版LIB: 2.32位.release版LIB: 3 ...
- 用VS2015编译sqlcipher
简介 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经在很多嵌 ...
- windows 如何编译 Openssl ?
windows 如何编译 Openssl ? 编译环境 VS2015 Openssl 1.0.2 ActivePerl 5.24.3 x64 编译步骤 安装 ActivePerl 期间,勾选添加至环境 ...
- 自己动手编译OpenSSL库
因为工作需要,要实现一个基于SSL的通信程序.之前没有接触过SSL协议通讯,这次学习了一下如何自己编译OpenSSL库. 我使用的环境是Windows 10 + VS2015 1.首先打开VS2015 ...
- grpc vs2015编译
获取gRPC源码 gRPC是开源框架,项目代码在github上,所以首先要安装github.github安装后,在指定文件夹中,执行git命令就可以获取gRPC的所有源码. git clone ht ...
- vs2015编译使用GRPC
1.获取源码:位于github上 电脑装有git的直接克隆,未装git下载压缩包也可以 git clone https://github.com/grpc/grpc.git cd grpc git ...
- WIN10+QT5.9+VS2015编译RedisDesktopManager
原文:WIN10+QT5.9+VS2015编译RedisDesktopManager 官方源码编译安装说明地址:http://docs.redisdesktop.com/en/latest/insta ...
随机推荐
- allowMultiQueries=true允许插入多条语句
在context.xml中,url写成url="jdbc:mysql://localhost:3306/fivecrowdsourcing?allowMultiQueries=true&qu ...
- 978. Longest Turbulent Subarray
A subarray A[i], A[i+1], ..., A[j] of A is said to be turbulent if and only if: For i <= k < j ...
- 【北京】安全研究员/工程师-20-35K,人体工程学座椅坐等你来~
招聘地点:北京市西城区 薪资:20-35K 人体工程学座椅,高大上环境坐等你来 [招聘]安全研究员+安全工程师-北京数字观星科技有限公司 北京数字观星科技有限公司成立于2016年9月29日,是一家致力 ...
- beyondCompare试用期到期解决办法
找到beyond Compare 4文件夹下面的BCUnrar.dll,将其删掉或者重命名,再重新打开接着使用! 我这是转的,到期之后试试.
- jvm高级特性(1)(内存泄漏实例)
jvm内存结构回顾: .8同1.7比,最大的差别就是:元数据区取代了永久代.元空间的本质和永久代类似,都是对JVM规范中方法区的实现. 不过元空间与永久代之间最大的区别在于:元数据空间并不在虚拟机中, ...
- linux安装应用程序
实验:为 Linux 主机安装应用程序 环境:vmware workstation 14 . redhad-server-6.4 需求:1.使用 RPM 包的方式安装 Mozilla Firef ...
- LayoutInflater.inflate源码分析
基于Android 4.2.2做的分析 parser里封装了layout的dom对象,从中可以获取各节点参数 root为layout对应根节点的父节点,其作用见上述文档解释,需要注意一点的是,root ...
- 监督学习——决策树理论与实践(上):分类决策树
1. 介绍 决策树是一种依托决策而建立起来的一种树.在机器学习中,决策树是一种预测模型,代表的是一种对象属性与对象值之间的一种映射关系,每一个节点代表某个对象/分类,树中的每一个分叉路 ...
- 2018春招-今日头条笔试题-第四题(python)
题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版) #-*- coding:utf-8 -*- class Magic: ''' a:用于存储数组a b:用于存储数组b num:用于 ...
- GBDT多分类示例
相当于每次都是用2分类,然后不停的训练,最后把所有的弱分类器来进行汇总 样本编号 花萼长度(cm) 花萼宽度(cm) 花瓣长度(cm) 花瓣宽度 花的种类 1 5.1 3.5 1.4 0.2 山鸢尾 ...