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

本文介绍如何使用Visual Studio 2015编译OpenSSL库,包括32位和64位的Debug及Release版本,并提供详细的步骤指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值