http://blog.csdn.net/henter/article/details/8364532

首先要说明,如果不想自己编译OpenSSL,可以到
http://slproweb.com/products/Win32OpenSSL.html
去下载安装已经编译好的文件。

使用到的软件:
1) 64位Win7 sp1专业版
2) Perl,当时用的是ActivePerl 5.14.2.102(64位版),安装目录在 E:\Perl64\
3) OpenSSL 1.0.1c  解压后文件放在目录 F:\openssl\  该目录下应该有apps,bugs,certs等子目录和其他一些文件。注意下载OpenSSL以后解压缩最好把文件放在英文路径下,路径中最好不要有非英文字符、空格等特殊符号。
4) Visual Studio 2010,安装目录在 E:\Microsoft Visual Studio 10.0\

这里要编译出64位的库文件,所以应该先仔细阅读openssl目录下的INSTALL.W64文件。如果需要编译出32位的库文件,应该阅读openssl目录下的INSTALL.W32文件。

检查perl相关文件是否被添加到环境变量,在命令行窗口中执行Path,结果应该为:PATH=E:\Perl64\site\bin;E:\Perl64\bin; ...

启动VS2010命令行窗口,在“开始”菜单 Visual Studio 2010 中选择Visual Studio Tools,在其中选择Visual Studio x64 Win64命令提示(2010),注意不要选择Visual Studio x64 Win64兼容工具命令提示(2010),也不要选择Visual Studio IDE里面“工具”菜单中的"Visual Studio命令提示",进入那个命令窗口以后使用的默认编译器是32位而不是64位编译器。也可以在命令行窗口中,进入目录 E:\Microsoft Visual Studio 10.0\vc\bin\amd64\ ,执行命令 vcvar64.bat。

(如果想要编译出32位的库文件,在“开始”菜单 Visual Studio 2010 中选择Visual Studio Tools,在其中选择Visual Studio 命令提示(2010)。或者在命令行窗口中,进入目录 E:\Microsoft Visual Studio 10.0\VC\bin\ ,执行vcvars32.bat。)

进入Openssl文件所在目录 F:\openssl\ ,执行下面的命令:
perl Configure VC-WIN64A
ms\do_win64a
nmake -f ms\ntdll.mak
nmake -f ms\nt.mak

注意:

1)  nmake -f ms\ntdll.mak命令生成动态链接库,输出内容在\openssl\out32dll目录下。
     nmake -f ms\nt.mak命令生成静态链接库,输出内容在\openssl\out32目录下。

2) 如果要编译出32位的库,用不到汇编时对上面的执行命令做以下修改:把perl Configure VC-WIN64A 改为 perl Configure VC-WIN32 no-asm,把ms\do_win64a 改为 ms\do_ms,其他命令不变。用到汇编时对上面的执行命令做以下修改:把perl Configure VC-WIN64A 改为 perl Configure VC-WIN32,执行完 perl Configure VC-WIN32命令后,接下来执行 ms\do_nasm,再把执行ms\do_win64a 改为执行 ms\do_ms,剩下的两条nmake命令不变。

3) perl Configure VC-WIN64A 命令中 Configure这个字符串中的字母大小写一个也不能错!否则后面编译会出问题。

4) 可以使用--prefix=...来指定openssl编译好以后的安装路径,随便举一个例子:

perl Configure VC-WIN32 --prefix=F:/openssl

5)  可能用到以下命令

编译动态库:    nmake -f ms\ntdll.mak

测试动态库:    nmake -f ms\ntdll.mak test
     编译静态库:    nmake -f ms\nt.mak
     测试静态库:    nmake -f ms\nt.mak test

清除上次动态库的编译,以便重新编译:    nmake -f ms\ntdll.mak clean
     清除上次静态库的编译,以便重新编译:    nmake -f ms\nt.mak clean

5) 在include子目录下存放相关的.h头文件,在out32和out32dll子目录下都有openssl.exe文件,out32目录下存放静态库文件:libeay32.lib(大小为13213KB)和ssleay32.lib文件(大小为1859KB),out32dll目录下存放动态库及相关文件:libeay32.dll, libeay32.lib(大小为762KB)和ssleay32.dll, ssleay32.lib(大小为65KB)文件。从文件大小可以看出,尽管out32和out32dll两个目录下有同名文件ssleay32.lib, libeay32.lib, 但是同名文件不能混用。

6) ssleay32文件中包含与ssl协议相关的函数的实现,libeay32中包含与密码运算相关的函数的实现。

最后可以检查编译出来的dll文件是否是64位的,方法如下:

在 http://www.dependencywalker.com/ 可以下载 depends 工具软件,下载Dependency Walker for Win64 (x64),运行以后分别打开ssleay32.dll和libeay32.dll,在左上方的子窗口中,可以看到SSLEAY32.dll或LIBEAY32.DLL的文件名左边有小数字64,说明是64位的dll。(或者在Module窗口中找到SSLEAY32.dll或LIBEAY32.DLL,在同一行的CPU一栏中,可以看到值是x64,也说明是64位的dll。)

虽然按照上面所说方法编译生成的文件放在out32、out32dll目录下,生成的库文件名中也带有"32"字样,如libeay32.dll,ssleay32.lib,但不可望文生义,以为这些库文件就是32位的。

转载于:https://www.cnblogs.com/lgh1992314/p/5834721.html

64位Win7下用VS2010编译OpenSSL相关推荐

  1. arduinowin7_Arduino在64位WIN7下无法安装驱动的解决办法

    本人购买Arduino UNO R3连接在64位WIN7下,安装官方驱动后显示如下图错误: 硬件列表显示未知设备,如下图: 多次反复安装仍无法识别,在网上搜索都说是精简版的Win7 ghost删除了大 ...

  2. 招商银行U盾/网盾(专业版)在64位win7下不能运行的解决方法

    自从换win7后,小生的招行U盾一直不能正常使用,严重影响网上支付.经多方查询并亲身试验,以下方案绝对有效,就不必烦劳小生本人亲自研究了,感谢原作者! 在64位win7下,很多软件都不能正常运行,让人 ...

  3. VC6在64位Win7下调试无法退出的问题(缺少TLLOC.DLL和DM.dll)

    win7 64位VC++6.0调试代码无法关闭窗口解决方法 VC6在64位Windows7下调试的时候,再结束调试,程序无法退出. 问题描述:当我击F5开始一个项目的调试时,程序在我设置的断点处停止, ...

  4. matlab2012生成dll,64位win7下vc2010如何調用matlab2012a中生成的dll文件

    本文說是原創,但核心部分是參考http://blog.sina.com.cn/s/blog_a5fdbf0101018n91.html(大家可以先看看這篇文章),在此再次感謝debug童鞋.debug ...

  5. matlab2012生成dll,64位win7下vc2010如何调用matlab2012a中生成的dll文件

    本文说是原创,但核心部分是参考http://blog.sina.com.cn/s/blog_a5fdbf0101018n91.html(大家可以先看看这篇文章),在此再次感谢debug童鞋.debug ...

  6. 手把手教你在64位Win7下部署16位汇编学习环境

    实现方式是VirtualBox虚拟机+精简的32位xp系统.指导小白用,高手就直接跳过吧. 一.背景 初学者学习汇编语言通常是从16位汇编开始,但是现在的64位Win7系统明确表示不支持16位的程序. ...

  7. 如何在64位win7下通过ODAC来访问Oracle服务器

    最近公司跟我换了新电脑:2代i3+8G内存,由于32位的win7最多只能用3.25G内存,而用ramdisk4g划出4.75G来作硬盘又觉太浪费,遂想用64位的系统. 从网上下载了冷风的64位win7 ...

  8. 64位win7下安装keras的过程

    懒得系统升级,所以到现在仍然在用64位win7. 1,安装Anaconda(强烈建议) Anaconda已经集成了大量第三方包,无需自己一个个手动安装,会省去很多时间和精力,所以强烈建议去下载一个An ...

  9. 64位WIN7下虚拟机安装winxp

    出于项目需要,最近需要使用到TI公司的XDS510-USB2.0仿真器,但是经过一下午的资料调查发现现有电脑64位WIN7以及win10无法识别该仿真器,因为不兼容,也没有相应的驱动可以安装:于是打算 ...

最新文章

  1. 前端(二)——HTML之列表、表格、媒体元素
  2. DDR3 LAYOUT RULES
  3. java附加属性_Java 9附加流
  4. 原生jsonp发送跨域请求
  5. git向远程推送代码提示需要token
  6. clickhouse 数据存储
  7. 数据分析的一些简单思路总结
  8. #游戏unity-VR场景漫游#shader之消除纹理重复感
  9. 【Java常见异常】InaccessibleObjectException异常处理方法
  10. zzuli OJ 1047: 对数表
  11. 迅雷5vip帐号获取器
  12. 键盘按键的各种编码对照表
  13. 01_开关电源设计-电源反馈电路怎么设计?TL431配合光耦反馈电路实例设计
  14. 奇技淫巧之dummy网卡
  15. 战略管理与资本运作案例剖析
  16. 任意App/H5的web页面直接打开微信小程序的实现
  17. {转载}circos绘图(3)
  18. ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to
  19. 【饭谈】为什么有的同事那么菜但工资比自己高?
  20. 2006年第三季度中国ERP市场规模与市场份额

热门文章

  1. java 申明数组 默认构造函数_没有默认构造函数,如何定义对象的数组
  2. java app支付_Java 微信支付之APP支付服务端 (一)
  3. mongodb插入数据_MongoDB插入
  4. 斯威夫特山地车_斯威夫特枚举
  5. java 对象深度复制_Java深度复制– Java复制对象
  6. wordpress编辑插件_如何使用Tabify编辑屏幕插件减少WordPress帖子编辑器屏幕的拥挤
  7. spire.pdf系列文章
  8. 详细说明自学Python需要具备什么?
  9. 开课吧:分享C++代码的整洁之道!
  10. 开发环境运行正常,发布服务器后提示HTTP 错误 403.14 - Forbidden