简述

OpenSSL是一个开源的第三方库,它实现了SSL(Secure SocketLayer)和TLS(Transport Layer Security)协议,被广泛企业应用所采用。对于一般的开发人员而言,在Win32 OpenSSL上下载已经编译好的OpenSSL库是省力省事的好办法。对于高级的开发用户,可能需要适当的修改或者裁剪OpenSSL,那么编译它就成为了一个关键问题。下面主要讲述如何在Windows上编译OpenSSL库。

步骤

  1. 在微软网站下载并安装Visual Studio,我用的是2013版。

  2. 下载并安装ActivePerl。 
    下载地址:http://www.activestate.com/activeperl/downloads 
    我下载的是:5.22.1.2201 Windows Installer (MSI)

    打开命令提示符,将其定位到D:\Program Files\Perl\eg目录下,执行perl example.pl,若提示:Hello from ActivePerl! 则说明Perl安装成功,可以开始使用Perl的相关命令来进行OpenSSL的安装了。

  3. 下载并安装Nasm汇编器,并将D:\Program Files\NASM添加到系统环境变量Path中。 
    下载地址:http://www.nasm.us/ 。 
    我下载的是:nasm-2.12.01-installer-x86.exe。

  4. 下载并安装OpenSSL。 
    下载地址:http://www.openssl.org/。 
    我下载的是:openssl-1.0.2h.tar.gz (SHA256) (PGP sign) (SHA1)

在完成所有上述步骤,我们就可以解压缩OpenSSL包(解压至:E:\openssl-1.0.2h),在对它进行修改便可以编译了。解压后的目录中有两个文件INSTALL.W32、INSTALL.W64需要被关注。打开其中任何一个文件,你会看到如何编译OpenSSL的各个步骤。

  1. 将命令提示符定位到E:\openssl-1.0.2h

  2. 输入perl Configure VC-WIN32 --perfix=E:\OpenSSL (将其安装到E:\OpenSSL)。

  3. 输入ms\do_nasm。

  4. 将命令提示符定位到D:\Program Files\Microsoft Visual Studio 12.0\VC\bin, 然后输入vcvars32.bat(如果没有这一步,会提示nmake不是内部或外部命令)。

  5. 再次将命令提示符定位到E:\openssl-1.0.2h

  6. 输入nmake -f ms\ntdll.mak,执行完后会在openssl-1.0.2h目录下生成一个out32dll的文件夹,里面包含了一些静态库、动态库和.exe文件。

  7. 输入nmake -f ms\ntdll.mak test,若最终显示passed all tests说明生成的库正确。

  8. 输入nmake -f ms\ntdll.mak install,则会在E:\OpenSSL目录下生成bin、include、lib、ssl四个文件夹。

注意:

  • 以上编译的是release库,若编译debug库,则将以上第2步中的VC-WIN32改成debug-VC-WIN32即可。

  • 若编译静态库,则用ms\nt.mak替换掉上面用到的ms\ntdll.mak即可。

  • 若生成不带汇编支持的库,则需将以上第2、3步用perl Configure VC-WIN32 no-asm --prefix=E:\OpenSSLms\do_ms替换即可。

  • E:\openssl-1.0.2h\tmp32dll文件夹下包含相应的汇编文件。

更多参考

http://blog.csdn.net/u011012932/article/details/51658574

VS2013编译OpenSSL的更多相关文章

  1. windows环境下VS2013编译openSSL

    openssl版本:1.0.2h 编译器:MSVC (VS2013) 需要准备工具:perl. windows环境的perl下载请戳这里:http://www.activestate.com/acti ...

  2. net-snmp源码VS2013编译添加加密支持(OpenSSL)

    net-snmp源码VS2013编译添加加密支持(OpenSSL) snmp v3 协议使用了基于用户的安全模型,具有认证和加密两个模块. 认证使用的算法是一般的消息摘要算法,例如MD5/SHA等.这 ...

  3. net-snmp源码VS2013编译添加加密支持(OpenSSL)(在VS里配置编译OpenSSL)

    net-snmp源码VS2013编译添加加密支持(OpenSSL) snmp v3 协议使用了基于用户的安全模型,具有认证和加密两个模块. 认证使用的算法是一般的消息摘要算法,例如MD5/SHA等.这 ...

  4. VS2013中编译openssl的步骤和使用设置

    一.VS2013中编译openssl的步骤 版本号:openssl-1.0.1e 1.下载 OpenSSL http://www.openssl.org/,并解压到d:\openssl-1.0.1e目 ...

  5. VS2013编译64位OpenSSL(附32位)

    安装ActivePerl 这个没什么好说的,直接运行msi即可. 编译OpenSSL 1.使用Visual Studio Tool中的“VS2013 x64 本机工具命令提示”来打开控制台:也可以打开 ...

  6. Windows下编译OpenSSL(使用VS2013)

    简述 OpenSSL是一个开源的第三方库,它实现了SSL(Secure SocketLayer)和TLS(Transport Layer Security)协议,被广泛企业应用所采用.对于一般的开发人 ...

  7. VS2013编译google protobuf 出现问题error C3861: “min”:

    问题描述: 今天用vs2013编译protobuf 2.4.1 报错: 错误 3 error C3861: "max": 找不到标识符 f:\google\protobuf\pro ...

  8. [转] Windows下编译OpenSSL

    简述 OpenSSL是一个开源的第三方库,它实现了SSL(Secure SocketLayer)和TLS(Transport Layer Security)协议,被广泛企业应用所采用.对于一般的开发人 ...

  9. Vs2012(Vs2013) 编译 64位 Qt (动态库), 并使用自编译Qt建立工程(悲催经历)。(含遗留问题)

    仅供参考. 体会:我个人此次编译不该使用Vs2013编译Qt. 使用以下程序: Qt : qt-opensource-windows-x86-msvc2012_64_opengl-5.2.1.exe ...

随机推荐

  1. TFT LCD 参数详解

    我的板子设置HCLK=100M因此CLKVAL= int(HCLK/(VCLK*2)-1),其中VCLK即上图的DCLK=6.4M, CLKVAL="int"(100/12.8-1 ...

  2. iTween基础之Fade(淡入淡出)

    一.基础介绍:二.基础属性 原文地址: http://blog.csdn.net/dingkun520wy/article/details/50923665 一.基础介绍 FadeTo:从当前透明度变 ...

  3. 【BOZJ 1901】Zju2112 Dynamic Rankings

    Description 给定一个含有n个数的序列a[1],a[2],a[3]……a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]……a[j]中第k小的数是 ...

  4. 四则运算出题器(C++)-BUG修复

    定制题目数量这个功能测试: (1)输入题目数为负数时: 可正确处理: (2)输入题目数量为0时: 可正确处理: (3)输入题目数量为小数时: 程序运行出错: 错误分析: 因为代码中题目数量的变量Que ...

  5. python操作sqlite数据库

    root@cacti:~/box# cat convert.py #!/usr/bin/env python import sqlite3,time,rrdtool,os def boxstatus( ...

  6. 【First Missing Positive】cpp

    题目: Given an unsorted integer array, find the first missing positive integer. For example,Given [1,2 ...

  7. Installing Ruby 1.9.3 on Ubuntu 12.04 Precise Pengolin (without RVM)

    02 MAY, 2012 The new Ubuntu release has just rolled around and with it a slew of new packages. Perso ...

  8. shell 进程查询相关的命令

    同一个进程部署多个,如何知道删除哪个: ll /proc/ 会显示位置 查看pid下哪些socket链接 ll /proc//fd

  9. openwrt的交叉编译

    默认情况下,openwrt编译脚本会自动从Internet上获取所需要的软件包源代码,并把下载的源码包存放在当前目录的 dl/ 目录中:  在 build_dir/ 目录中存放编译中使用的软件包,   ...

  10. hdu 2883 kebab 网络流

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2883 Almost everyone likes kebabs nowadays (Here a ke ...