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.2j\include

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

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

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位有区别】

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

ms\32all.bat no-asm

实际我在通过这条命令编译的时候,也会编译失败无法继续; 
如果想要交叉编译libcurl,还是用libcurl\project\build-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】 
      命令如下:

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

      ms\do_win64a.bat
      • 1
      • 1

      执行这一步之后,在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
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
  • 【编译openssl动态链接库】 
    命令如下:
nmake -f ms\ntdll.mak
nmake -f ms\ntdll.mak test
nmake -f ms\ntdll.mak install
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
  • 执行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.
  • 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.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

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

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

Win7 下用 VS2015 编译最新 openssl(1.0.2j)包含32、64位debug和release版本的dll、lib(8个版本)的更多相关文章

  1. 最新精品 强势来袭 XP,32/64位Win7,32/64位Win8,32/64位Win10系统【国庆版版】

    本系统是10月最新完整版本的Windows10 安装版镜像,Win10正式版,更新了重要补丁,提升应用加载速度,微软和百度今天宣布达成合作,百度成为Win10 Edge浏览器中国默认主页和搜索引擎,系 ...

  2. 最新精品 强势来袭 XP,32/64位Win7,32/64位Win10系统【电脑城版】

    随着Windows 10Build 10074 Insider Preview版发布,有理由相信,Win10离最终RTM阶段已经不远了.看来稍早前传闻的合作伙伴透露微软将在7月底正式发布Win10的消 ...

  3. 【全网首发】使用vs2017+qt5.12.4编译64位debug和release的qgis3.4.9

    一.摘要: 搜索网络没有发现一篇文章完整的介绍如何编译qgis3.4.x的debug版本,官方的指导也长时间不再更新. 所以前前后后花了4天搞定qgis的debug编译,并成功运行,废话不多说,直接上 ...

  4. 实践详细篇-Windows下使用VS2015编译的Caffe训练mnist数据集

    上一篇记录的是学习caffe前的环境准备以及如何创建好自己需要的caffe版本.这一篇记录的是如何使用编译好的caffe做训练mnist数据集,步骤编号延用上一篇 <实践详细篇-Windows下 ...

  5. win7下解决vs2015新建项目,提示“未将对象引用设置到引用实例“的问题

    问题描述: 打开vs2015新建c++项目时,出现有如下内容的对话框“未将对象引用设置到引用实例”的提示 解决方法: 1.  温馨提示:千万不要一冲动,就去卸载vs2015!! win7下安装vs20 ...

  6. win7下使用cygwin编译VLC

     win7下使用cygwin编译VLC http://kathy.blog.51cto.com/1168050/295460 2010-04-15 14:54:01 标签:编译 休闲 VLC 职场 w ...

  7. 在CUDA8.0下指定位置编译安装OpenCV3.1.0来实现GPU加速(Compiling OpenCV3.1.0 with CUDA8.0 support)

    在CUDA8.0下指定位置编译安装OpenCV3.1.0 一.本人电脑配置:ubuntu 14.04, NVIDIA GTX1060. 二.编译OpenCV3.1.0前,读者需要成功安装CUDA8.0 ...

  8. 【Win7激活工具2013版下载】适用于旗舰版、家庭高级版等所有版本32/64位 OEM激活

    虽然现在Win8已经发布了,但是身边总是还有一些朋友在用着Win7系统,而近期微软频繁的推送补丁包,导致之前的那些激活都失效了.找了网络上很多工具,之前的那些有的已经不能用了,激活不了,今天就推荐一些 ...

  9. XP,32/64位Win7,32/64位Win8,32/64位Win10系统 【春节版】

    本系统是10月5日最新完整版本的Windows10 安装版镜像,win10正式版,更新了重要补丁,提升应用加载速度,微软和百度今天宣布达成合作,百度成为win10 Edge浏览器中国默认主页和搜索引擎 ...

随机推荐

  1. 嵌入式C语言优化小技巧

    嵌入式C语言优化小技巧 1 概述 嵌入式系统是指完成一种或几种特定功能的计算机系统,具有自动化程度高,响应速度快等优点,目前已广泛应用于消费电子,工业控制等领域.嵌入式系统受其使用的硬件以及运行环境的 ...

  2. Unity3D 画线插件 Vectrosity 画一个一直循环的正弦函数曲线

    直接贴代码 public Material myMaterisl; float fx;//曲线最左边的X坐标 float fy;//曲线趋于直线时y轴坐标 float fyMax = 0f;//曲线最 ...

  3. android获取apk签名信息

    因为工作需要,需要获取应用的apk传递给新浪微博或者微信去申请授权 所以需要程序内获取签名上传服务器 做法如下:   public static String getAPPSecretString(A ...

  4. 解决PyGObject在pydev下报错的问题

    使用PyGObject在eclispe+pydev下写代码,由于库是动态链接的,pydev无法识别,所以检查语法的时候会报错,但是并不影响代码运行. 不过对于我这样由轻微强迫症的患者来说,看见代码报错 ...

  5. [Angular 2] Exposing component properties to the template

    Showing you how you can expose properties on your Controller to access them using #refs inside of yo ...

  6. sbt 配置

    1. SBT使用local maven repository,下载的库依然放在 ~/.m2/repository 2. SBT assembly 会把依赖库打包到一个jar包,需要使用assembly ...

  7. [转] 剖析 epoll ET/LT 触发方式的性能差异误解(定性分析)

    http://blog.chinaunix.net/uid-17299695-id-3059078.html PS:Select和Poll都是水平触发,epoll默认也是水平触发 ET模式仅当状态发生 ...

  8. JS可控制的图片自动循环播放查看效果

    JS可控制的图片自动循环播放查看效果 <html> <head> <title>JS可控制的图片自动循环播放查看效果丨芯晴网页特效丨CsrCode.Cn</t ...

  9. JPA事务回滚配置

    <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.or ...

  10. Lucene全文检索

    Lucene写入和更新操作: if (id.equals("")) { this.goodsService.save(goods); String goods_lucene_pat ...