64位Win7下用VS2010编译OpenSSL
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位的。
64位Win7下用VS2010编译OpenSSL的更多相关文章
- 64位Win7下运行ASP+Access网站的方法
		
64位Win7下运行ASP+Access网站的方法 近日系统升级为WIN7 64位之后,突然发现原本运行正常的ASP+ACCESS网站无法正常连接数据库. 网上搜索多次,终于解决了问题,总结了几条经验 ...
 - 64位Win7下H3C的iMC无法查看“网络拓扑”的解决方法、心路历程
		
64位Win7下H3C的iMC无法查看"网络拓扑"的解决方法.心路历程
 - 64位Win7下安装与配置PHP环境【Apache+PHP+MySQL】
		
[软件下载] 本安装实例所使用安装文件如图所示: 其中,64位版本的MySQL安装文件mysql-5.5.33-winx64.msi,可直接从官网下载,下载地址:http://dev.mysql.co ...
 - 关于在64位win7下运行Virtualbox安装系统时出错(提示VBoxDD.DLL错误)的解决方
		
安装没有问题,安装了最新版VirtualBox-4.3.18-96516-Win,一点运行想安装系统时就出错. 这是提示的错误: 运行Virtualbox去安装系统时出错:Failed to open ...
 - C# 64位win7下DllImport LoadLibrary函数失败 z
		
[DllImport["kernel32.dll"]] static extern IntPtr LoadLibrary(string lpFileName); public vo ...
 - win7 64位专业版下的x64编译问题
		
在Django的开发过程中,碰到一个问题,就是所有本地库的位数必须是相同的,于是某些库需要重新编译一下,工作环境,不能用盗版程序,VC++ 2008\2010 Express版本身都不支持X64的编译 ...
 - 64位WIN7下安装MPICH2
		
1.首先,下载32位的MPICH2,(注意哦,是32位,不是64位) http://202.117.4.228/files/B117000000042632/www.mcs.anl.gov/resea ...
 - 64位win7下安装Boost 1.59.0 + boost.python 1.59.0 + gccxml + pygccxml + pyplusplus(py++)
		
由于安装过程中实在是出现了N多问题,所以不得不专门写个帖子来记录一下这破东西在Win7下的安装过程,避免以后还要再用的时候踩坑. 1.Boost简介 Boost库是一个可移植.提供源代码的C++库,作 ...
 - 64位win7下powerdesigner15连接postgresql9.2问题解决
		
win7下已经安装jdk1.6 64bit版 安装powerdesigner 15,下载了postgressql jdbc驱动(下载地址:http://jdbc.postgresql.org/down ...
 
随机推荐
- MementoPattern(备忘录模式)-----Java/.Net
			
备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象.备忘录模式属于行为型模式.
 - overflow:hidden的使用
			
(1)overflow:hidden可以用来隐藏溢出的文本内容 给定内容的大小(宽高)超出后自动隐藏 <body> <div class="box"> ...
 - .Net Core 认证系统之基于Identity Server4 Token的JwtToken认证源码解析
			
介绍JwtToken认证之前,必须要掌握.Net Core认证系统的核心原理,如果你还不了解,请参考.Net Core 认证组件源码解析,且必须对jwt有基本的了解,如果不知道,请百度.最重要的是你还 ...
 - Java代码调用Shell脚本并传入参数实现DB2数据库表导出到文件
			
本文通过Java代码调用Shell脚本并传入参数实现DB2数据库表导出到文件,代码如下: import java.io.File; import java.io.IOException; import ...
 - 新上手jupyterlab安装及问题解决
			
最近jupyter notebook又出了一个新玩法:jupyterlab但是很多小伙伴和我一样,在安装的时候出现了很多问题,于是乎我总结了一下,希望给大家带来帮助 首先,最好保持你的浏览器是最新的版 ...
 - AVR单片机教程——串口接收
			
本文隶属于AVR单片机教程系列. 上一讲中,我们实现了单片机开发板向电脑传输数据.在这一讲中,我们将通过电脑向单片机发送指令,让单片机根据指令控制LED.这一次,两端的TX与RX需要交叉连接,单片 ...
 - webpack进阶用法你都get到了么?
			
如何消除无用代码:打包自己的私有js库:实现代码分割和动态import提升初次加载速度:配置eslint规范团队代码规范:打包异常抓捕你都get到了么? 摇树优化:Tree Shaking webpa ...
 - IDEA使用 磨刀霍霍向代码
			
工欲善其事,必先利其器 ,当下有数不清的 Java 程序员将石器时代的 Eclipse 替换成了现代化的智能开发工具 InteliJ IDEA ,写代码的小日子过得不亦乐乎(玩笑话,两者各有千秋,看个 ...
 - 安装Jupyter Notebook
			
1.安装Ipython pip3 install -i https://pypi.douban.com/simple ipython 2.安装jupyter pip3 install -i https ...
 - javaweb-codereview 学习记录-1
			
Servlet是在Java Web容器上运行的小程序,通常我们用Servlet来处理一些较为复杂的服务器端的业务逻辑.值得注意的是在Servlet3.0之后(Tomcat7+)可以使用注解方式配置Se ...