概述

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的更多相关文章

  1. [转]Windows下使用VS2015编译openssl库

    转自:http://blog.csdn.net/alger_magic/article/details/52584171 目标:编译vs环境下openssl库 工具: 1. 编译环境win10+vs2 ...

  2. windows vs2015 编译openssl 1.1.0c

    1,到openssl官网下载源码. 2,安装activePerl,我放在网盘:https://pan.baidu.com/s/1ZHe24yRcPtIuSiEa-3oqxw 3.安装完毕后,使用 VS ...

  3. 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 ...

  4. 用VS2015编译sqlcipher

    简介 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经在很多嵌 ...

  5. windows 如何编译 Openssl ?

    windows 如何编译 Openssl ? 编译环境 VS2015 Openssl 1.0.2 ActivePerl 5.24.3 x64 编译步骤 安装 ActivePerl 期间,勾选添加至环境 ...

  6. 自己动手编译OpenSSL库

    因为工作需要,要实现一个基于SSL的通信程序.之前没有接触过SSL协议通讯,这次学习了一下如何自己编译OpenSSL库. 我使用的环境是Windows 10 + VS2015 1.首先打开VS2015 ...

  7. grpc vs2015编译

    获取gRPC源码 gRPC是开源框架,项目代码在github上,所以首先要安装github.github安装后,在指定文件夹中,执行git命令就可以获取gRPC的所有源码. git clone  ht ...

  8. vs2015编译使用GRPC

    1.获取源码:位于github上 电脑装有git的直接克隆,未装git下载压缩包也可以 git clone  https://github.com/grpc/grpc.git cd grpc git ...

  9. WIN10+QT5.9+VS2015编译RedisDesktopManager

    原文:WIN10+QT5.9+VS2015编译RedisDesktopManager 官方源码编译安装说明地址:http://docs.redisdesktop.com/en/latest/insta ...

随机推荐

  1. ASP.NET MVC 扩展HtmlHelper类为 js ,css 资源文件添加版本号

    写在前面 在项目部署当中会需要更新 css 文件或 js 等资源文件,为了避免由于浏览器缓存的原因无法加载新的 css 或 js ,一般的做法是在资源文件的后面加上一个版本号来解决,这样浏览器就会去服 ...

  2. 931. Minimum Falling Path Sum

    Given a square array of integers A, we want the minimum sum of a falling path through A. A falling p ...

  3. jQuery基础笔记 each和data(7)

    day56 参考:https://www.cnblogs.com/liwenzhou/p/8178806.html#autoid-1-11-0 each jQuery.each(collection, ...

  4. C++中new申请动态数组

    C++中数组分为静态数组和动态数组,静态数组必须确定数组的大小,不然编译错误:而动态数组大小可以不必固定,用多少申请多少.静态数组类于与我们去餐馆吃饭,餐馆会把菜做好.而动态数组类似于我们自己买菜做饭 ...

  5. 打开SVN server图形化管理界面

    来源:http://blog.csdn.net/u013495063/article/details/76796079 1.在ViaualSVN Service的安装目录:C:\Program Fil ...

  6. webpack快速入门——配置文件:服务和热更新

    1.在终端安装 cnpm i webpack-dev-server --save-dev 2.配置好后执行 webpack-dev-server,这时候会报错 出现错误,只需要在pagejson里配置 ...

  7. class字节码结构(一)(字节码结构和字节常量池的结构)

    <Java虚拟机原理图解> 1.1.class文件基本组织结构 关于变量的几个叫法: 局部变量/全局变量:很好区分根据所在位置. 类变量:静态的全局变量. 类常量:全局的final修饰的变 ...

  8. vmware安装——CentOS-6.5和Mysql

    1.新建虚拟机 2.安装centos6.5 3.centos设置 查看网络 4.vmware设置网络连接 关闭selinux [root@china ~]# vim /etc/selinux/conf ...

  9. ThreadLocal的实现机制

    TLS(Thread Local Storage)通过分配更多内存来解决多线程对临界资源访问的互斥问题,即每个线程均自己的临界资源对象, 这样也就不会发生访问冲突,也不需要锁机制控制,比较典型的以空间 ...

  10. python3 + zabbix api 的使用

    喜欢需要理由吗?需要吗?当然需要,zabbix的那么多功能足以让你喜欢她,现在还有zabbix API,zabbix真让我疯了,太牛逼了,太让人喜欢了.有zabbix API我们可以做很多,自己开发w ...