• Openssl VS编译方法


    工具:

    1. 编译环境win10+vs2015专业版

    2. ActivePerl工具,官网下载链接:http://www.activestate.com/activeperl/downloads

    3. openssl源码,下载链接:https://www.openssl.org/source/选择2016-May-03 13:57:13 openssl-1.0.1t.tar.gz这个版本,之所以没有选择1.1.0,发觉两个版本差异较大,ms文件夹下缺少很多文件,没办法按照此方法编译。

    步骤:

    1. 安装ActivePerl, 并添加环境变量(可以默认勾选,或者手动添加,如path=d:perlin)。

    2. 解压openssl。

    3. 点击 windows 开始->所有应用->vs2015->开发者命令提示(Developer Command Prompt for 2015)。

    4. CD到解压后的openssl的根目录。

    5. 执行命令:perl Configure debug-VC-WIN32(或者VC-WIN64A,取决于编译库类型,可以用–prefix=路径指定生成路径).
    6. msdo_ms.bat(创建makefile文件,64位需要使用msdo_win64a.bat)

    7. 执行nmake -f ms tdll.mak(编译动态库)。

    8. 执行nmake -f ms tdll.mak test查看库是否有问题。

    9. 执行nmake -f ms tdll.mak install 。

    TIPs:

    编译动态库: 
    nmake -f ms tdll.mak 
    编译静态库: 
    nmake -f ms t.mak 
    测试动态库: 
    nmake -f ms tdll.mak test 
    测试静态库: 
    nmake -f ms t.mak test 
    安装动态库: 
    nmake -f ms tdll.mak install 
    安装静态库: 
    nmake -f ms t.mak install 
    清除上次动态库的编译,以便重新编译: 
    nmake -f ms tdll.mak clean 
    清除上次静态库的编译,以便重新编译: 
    nmake -f ms t.mak clean

    • [编译类型]可以选择以下:
    参数含义
    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

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

          msdo_nasm
          • 1

          否则会在编译引用了该openssl库的工程中出现”error LNK2001error LNK2019 无法解析的外部符号”这个错误。(该解决方法由 WeiXin_zjmgly 提供)

        2. 【编译64位openssl】 
          命令如下: 
          msdo_win64a.bat
          • 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
      • 【编译openssl动态链接库】 
        命令如下:
      nmake -f ms
      tdll.mak
      nmake -f ms
      tdll.mak test
      nmake -f ms
      tdll.mak install
      • 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

      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
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8

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

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

  • 相关阅读:
    问题:弹窗还没点击确认就执行了跳转
    关于版本的问题
    timeUtil
    使用jframe编写一个base64加密解密工具
    JMeter 命令行(非GUI模式)详解(一)-分布式(远程)执行脚本及查看指定结果、日志
    jmeter分布式压测 java.io.FileNotFoundException: rmi_keystore.jks (系统找不到指定的文件。)
    mysql5.7日志时间与系统时间不一致
    mysql查看执行sql语句的记录日志
    Appium如何获取appPackage和appActivity
    关于测试设置
  • 原文地址:https://www.cnblogs.com/johngu/p/8023549.html
Copyright © 2020-2023  润新知