• 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、32位、debug版DLL;
    4、32位、release版DLL;
    5、64位、debug版LIB;
    6、64位、release版LIB;
    7、64位、debug版DLL;
    8、64位、release版DLL;

    http://download.csdn.net/detail/yaojingkao/9673763
    具体编译方法请看我的博客:http://blog.csdn.net/YAOJINGKAO/article/details/53041165
    -------------------------------------------------------------------------------------

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

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

    首先要知道:

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

    1、准备工作:

    • 1)下载安装编译必须的ActivePerl:http://www.activestate.com/activeperl/downloads 
      有说法说StrawbarryPerl也行,我没试过就不知道能不能成功了

    • 2)下载最新的openssl源码:https://www.openssl.org/source/ 
      我这里下载的是2016年11月4日最新的openssl 1.0.2j版本。然后解压至C盘根目录,形成如下目录结构: 
      C:openssl-1.0.2jinclude

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

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

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

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

    注意: 
    如果不是想单独拿编译好的库出来用,而是需要交叉编译,比如接着编译libcurl,则可以使用如下命令全部一次性编译32位所有版本的库:

    ms32all.bat no-asm

    实际我在通过这条命令编译的时候,也会编译失败无法继续; 
    如果想要交叉编译libcurl,还是用libcurlprojectuild-openssl.bat更好。 
    目前我已经通过这个文件成功交叉编译了libcurl with openssl gzip的release版本的lib, 
    详细方法请参考我的博客:http://blog.csdn.net/yaojingkao/article/details/53044361

    如果只是想编译OpenSSL,请接着看下面: 
    1)先进入openssl-1.0.2j目录

    cd C:openssl-1.0.2j

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

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

    • 3)配置模式:

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

        msdo_ms.bat
        • 1
        • 1
      2. 【编译64位openssl】 
        命令如下:

        msdo_win64a.bat
        • 1
        • 1

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

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

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

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

    Assembling: tmp32sha1-586.asm
    tmp32sha1-586.asm(1427) : error A2070: invalid instruction operands
    tmp32sha1-586.asm(1571) : error A2070: invalid instruction operands
    NMAKE : fatal error U1077: 'ml' : return code '0x1'
    Stop.
    • 1
    • 2
    • 3
    • 4
    • 5
    • 1
    • 2
    • 3
    • 4
    • 5

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

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

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

    cd C:Program Files (x86)Microsoft Visual Studio 14.0VCin
    vcvars32.bat
    perl Configure VC-WIN64A no-asm --prefix="c:openssl-1.0.2juild-vc14-debug-win64-dll"
    msdo_win64a.bat
    nmake -f ms
    tdll.mak
    nmake -f ms
    tdll.mak test
    nmake -f ms
    tdll.mak install
    nmake -f ms
    tdll.mak clean

    至此,就可以将c:openssl-1.0.2juild-vc14-debug-win64-dll目录复制到需要使用的地方就可以使用了。

    最后,附上一个我编译好的VS2015版本的openssl(1.0.2j)所有库,共八个链接库。 
    下载地址:http://download.csdn.net/detail/yaojingkao/9673763

  • 相关阅读:
    正则表达式
    Event flow(事件流)
    Regular Expression(验证账号密码邮箱身份证)
    constructor&object 的联系与区别
    BMAP
    for each in 与for in与for of
    History of program
    脑图(作业)
    对DOM的认识
    BOM的认识
  • 原文地址:https://www.cnblogs.com/findumars/p/4829637.html
Copyright © 2020-2023  润新知