Win7 下用 VS2015 编译最新 openssl(1.0.2j)包含32、64位debug和release版本的dll、lib

首先本文参考了以下网页,感谢!

http://www.jianshu.com/p/4522f17ce2ff和 
http://developer.covenanteyes.com/building-openssl-for-visual-studio/

 

首先要知道:

编译release版本和debug版本一般只要一个能编译通过,另一个也不会存在问题的。所以以下尽量精简文章长度,最后附有编译所需的所有命令行。

1、准备工作:

2、设置VC编译环境【编译32位64位有区别】

以下所有操作都是在【VS2015开发人员命令提示】中进行的,具体位置一般是【开始->所有程序->Visual Studio 2015-> Visual Studio Tools】下;

注意:编译64位需要打开【Visual Studio 2015 x64 本机工具命令提示符】;

1. 【编译32位openssl】
    命令如下:
        cd C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
        vcvars32.bat
2. 【编译64位openssl】
    命令如下:
        cd C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64
        vcvars64.bat

3、配置编译文件和类型【编译32位64位有区别】

1)先进入openssl-1.0.2j目录

cd C:\openssl-1.0.2j

2)配置输出目录和编译类型【编译32位、64位;release、debug有区别】 
命令格式如下:

perl Configure [类型] no-asm --prefix="[输出目录]"
  • [编译类型]可以选择以下:
参数含义
debug-VC-WIN32编译32位debug版本
VC-WIN32编译32位release版本
debug-VC-WIN64A编译64位debug版本
VC-WIN64A编译64位release版本
  • [输出目录]理论任何地方都可以。自己确定好就行

  • no-asm 即为去掉汇编

  • 3)配置模式:

    1. 【编译32位openssl】 
      命令如下:

      ms\do_ms.bat

      有网友指出,如果之前编译使用了no-asm参数,则需要修改命令为:

      ms\do_nasm

      否则会在编译引用了该openssl库的工程中出现”error LNK2001error LNK2019 无法解析的外部符号”这个错误。(该解决方法由 WeiXin_zjmgly 提供,实际上我编译不需要,使用ms\do_ms.bat即可)

    2. 【编译64位openssl】 编译64位需要打开【Visual Studio 2015 x64 本机工具命令提示符】
    3. 命令如下: 
      ms\do_win64a.bat

    执行这一步之后,在ms目录下会生成nt.mak和ntdll.mak两个编译配置文件 
    nt.mak 用于生成静态lib库 
    ntdll.mak 用于生成动态dll库

4、编译【编译静态库、动态库有区别】

  • 【编译openssl静态链接库】 
    命令如下:
nmake -f ms\nt.mak
nmake -f ms\nt.mak test
nmake -f ms\nt.mak install
  • 【编译openssl动态链接库】 
    命令如下:
nmake -f ms\ntdll.mak
nmake -f ms\ntdll.mak test
nmake -f ms\ntdll.mak install
  • 执行test命令可以测试编译好的库,测试成功了就可以运行install命令,运行完之后才会在输出目录中找到输出的编译好的库和加入工程时必要的include文件。 
    需要注意的地方:

1)设置编译类型的时候千万别忘记no-asm参数,关闭汇编模式,否则会出现类似如下错误:

Assembling: tmp32\sha1-586.asm
tmp32\sha1-586.asm(1427) : error A2070: invalid instruction operands
tmp32\sha1-586.asm(1571) : error A2070: invalid instruction operands
NMAKE : fatal error U1077: 'ml' : return code '0x1'
Stop.

2)设置VC编译环境的时候,注意有32位和64位的区别,网络上大多数是因为没有注意这个导致编译失败。

最后附上编译所需的所有命令(一个例子):

openssl目录:c:\openssl-1.0.2j\ 
以编译64位release版本的dll为例子:

cd C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
vcvars32.bat
perl Configure VC-WIN64A no-asm --prefix="c:\openssl-1.0.2j\build-vc14-debug-win64-dll"
ms\do_win64a.bat
nmake -f ms\ntdll.mak
nmake -f ms\ntdll.mak test
nmake -f ms\ntdll.mak install
nmake -f ms\ntdll.mak clean

 

最后,附上一个我编译好的VS2015版本的openssl(1.0.2o)所有库,共4个链接库。 
下载地址:https://pan.baidu.com/s/1z1b9jwlaROUr_M6O9T5ctQ 密码: 2wev

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Win64静态编译过的OpenSSL 1.0.2是针对Windows 64位操作系统进行的编译,并且以静态链接库的方式提供给用户使用的版本OpenSSL是一个开源的软件库,提供了一系列的加密和网络通信功能。通过编译OpenSSL,可以使其在Windows 64位操作系统上运行,并将其作为静态链接库进行使用。 静态编译的意思是将OpenSSL中的函数和代码编译进最终的应用程序中,而不是在运行时候动态链接。这样做的好处是在使用时不再需要依赖外部的动态链接库文件,而是直接在应用程序中调用OpenSSL的相关函数。这样可以更方便地进行应用程序的开发、部署和发布,减少了外部依赖的麻烦。 OpenSSL 1.0.2是一个较旧的版本,但是仍然被一些程序和系统所使用。通过静态编译,用户可以在Windows 64位操作系统上使用OpenSSL 1.0.2,而不必担心与其他版本或平台的兼容性问题。 通过使用Win64静态编译过的OpenSSL 1.0.2,用户可以在开发和部署应用程序时,使用OpenSSL提供的加密和网络通信功能,保障数据的安全传输和处理。静态编译的方式使得使用OpenSSL更加方便,避免了外部依赖的问题。同时,该版本适用于Windows 64位操作系统,满足了这一平台的需求。 总之,Win64静态编译过的OpenSSL 1.0.2是一个针对Windows 64位操作系统进行的编译,并以静态链接库的形式提供给用户使用的版本,可以方便地在开发、部署和发布应用程序时使用OpenSSL的加密和网络通信功能,保障数据的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值