简述

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
    打开命令提示符,将其定位到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/
  4. 下载并安装OpenSSL。
    下载地址:http://www.openssl.org/
    Github: https://github.com/openssl/openssl
  5. 如果没安装VS (版本不低于VS2008),则需要先安装VS。我安装的是VS2012。
    然后添加Path环境变量: C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin

在完成所有上述步骤,我们就可以解压缩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四个文件夹。
  9. 64位编译:

    运行 configure:
    perl Configure VC-WIN64A 或 perl Configure debug-VC-WIN64A

    创建Makefile文件:注意路径中的斜线。
    ms\do_win64a

    编译动态库:
    nmake -f ms\ntdll.mak

    编译静态库:
    nmake -f ms\nt.mak
  10. 32位编译:

    运行configure:
    perl Configure VC-WIN32 或 perl Configure debug-VC-WIN32

    创建Makefile文件:注意路径中的斜线。
    ms\do_ms

    编译动态库:
    nmake -f ms\ntdll.mak

    编译静态库:
    nmake -f ms\nt.mak

注意:

  • 以上编译的是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/liang19890820/article/details/51658574

[转] Windows下编译OpenSSL的更多相关文章

  1. 在Windows下编译OpenSSL(VS2005和VC6)

    需要说明的是请一定安装openssl-0.9.8a .  openssl-1.0.0我没有编译成功. 如何在Windows下编译OpenSSL (Vs2005使用Vc8的cl编译器)1.安装Activ ...

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

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

  3. Windows下编译openssl

    依赖工具: 1.VS 2.perl 编译方法: release: :\> 切换到openssl目录 :\> perl Configure VC-WIN32 no-asm --prefix= ...

  4. Windows下安装OpenSSL及其使用

    方法一: Windows binaries can be found here: http://www.slproweb.com/products/Win32OpenSSL.html You can ...

  5. Windows下编译 Hadoop

    Windows下编译 Hadoop-2.9.2 系统环境 系统: Windows 10 10.0_x64 maven: Apache Maven 3.6.0 jdk: jdk_1.8.0_201 Pr ...

  6. Windows下编译objective-C

    Windows下编译objective-C 2011-08-31 14:32 630人阅读 评论(0) 收藏 举报 windowscocoa工具objective clibraryxcode   目录 ...

  7. 在Windows下编译FFmpeg详细说明

    MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时 MinGW,即 Minimalist GNU F ...

  8. 如何在WINDOWS下编译BOOST C++库 .

    如何在WINDOWS下编译BOOST C++库 cheungmine 2008-6-25   写出来,怕自己以后忘记了,也为初学者参考.使用VC8.0和boost1.35.0.   1)下载boost ...

  9. windows下编译java源文件的编码错误

    import java.util.Arrays;public class ArrayAsAReference{ public static void main(String[] args) { int ...

随机推荐

  1. AngularJS 系列 01 - HelloWorld和数据绑定

    目录导读: AngularJS 系列 学习笔记 目录篇 前言: 好记性不如烂键盘,随笔就是随手笔记,希望以后有用. 本篇目录: 1. Hello World 2. AngularJS中的数据绑定 3. ...

  2. css之定位

    定位有三种,分别是相对定位 position:relative; .绝对定位 position:absolute; .固定定位 position:fixed; 相对定位 相对定位,就是微调元素位置的, ...

  3. Tomcat 服务应用

    转自:http://wiki.jikexueyuan.com/project/tomcat/windows-service.html Tomcat8 是一个服务应用,能使 Tomcat 8 以 Win ...

  4. 4-4 grep及正则表达式

    1. grep:Globally search a Regular Expression and Print:根据模式搜索文本,并将符合模式的文本行显示出来 pattern:文本字符和正则表达式的元字 ...

  5. 【Windows编程】系列第六篇:创建Toolbar与Statusbar

    上一篇我们学习了解了如何使用Windows GDI画图,该应用程序都是光光的静态窗口,我们使用Windows应用程序,但凡稍微复杂一点的程序都会有工具栏和状态栏,工具栏主要用于一些快捷功能按钮.比如典 ...

  6. monkeyrunner之控件ID不存在或重复

    我们在用monkeyrunner进行Android自动化时,通过获取坐标点或控件ID进行一系列操作.由于使用坐标点时,屏幕分辨率一旦更改,则代码中用到坐标的地方都要修改,这样导致代码的复用率较低.因此 ...

  7. JAVA开发中遇到的小白点

    这里主要是自己个人开发中遇到的一些小问题,自己攒起来,来弥补自己薄弱的JAVA基础,大神不要见笑 1. DateFormat格式化的HH和hh区别: public static boolean com ...

  8. C++点滴----关于类常成员函数

    关于C++中,类的常成员函数 声明样式为:   返回类型 <类标识符::>函数名称(参数表) const 一些说明: 1.const是函数声明的一部分,在函数的实现部分也需要加上const ...

  9. js中typeOf用法

    JS中的变量是松散类型(即弱类型)的,可以用来保存任何类型的数据. typeof 可以用来检测给定变量的数据类型,可能的返回值:1. 'undefined' --- 这个值未定义: 2. 'boole ...

  10. [LeetCode] Factorial Trailing Zeroes 求阶乘末尾零的个数

    Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be in log ...