欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Windows 7 64位安装OpenSSL

程序员文章站 2022-03-16 08:41:07
...

环境:Windows 7 64位系统、VS2010、ActivePerl、NASM、OpenSSL源码(版本:openssl-1.0.2n)

1 准备环境

VS2010下载安装:百度

ActivePerl、NASM下载安装及环境变量的配置参考:http://bbs.csdn.net/topics/392193545?page=1

OpenSSL源码下载:https://www.openssl.org/source/

2 安装OpenSSL

1、设置编译环境

打开Visual Studio x64 Win64命令提示(2010)工具:

Windows 7 64位安装OpenSSL

执行命令:

编译32位库:

cd D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin
vcvars32.bat

Windows 7 64位安装OpenSSL

编译64位库:

cd D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64
vcvars64.bat
Windows 7 64位安装OpenSSL

注: D:\Program Files (x86)\Microsoft Visual Studio 10.0 为VS2010安装目录

2、进入OpenSSL源码目录,为目标操作系统配置

编译32位库:

perl Configure VC-WIN32 no-asm --prefix="C:\OpenSSL"

Windows 7 64位安装OpenSSL

Windows 7 64位安装OpenSSL

编译64位库:

perl Configure VC-WIN64A

Windows 7 64位安装OpenSSL

Windows 7 64位安装OpenSSL

注: "C:\openssl-1.0.2n"为源码目录,no-asm表示不用汇编,--prefix后面为需要安装的目录,编译64位库默认安装路径为"C:\user"

3、准备目标环境,生成编译文件

编译32位库:

ms\do_ms.bat

Windows 7 64位安装OpenSSL

编译64位库:

Windows 7 64位安装OpenSSL

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

4、编译动态库

nmake -f ms\ntdll.mak

编译32位库:

Windows 7 64位安装OpenSSL

编译64位库:

Windows 7 64位安装OpenSSL

5、测试动态库

nmake -f ms\ntdll.mak test

编译32位库:

Windows 7 64位安装OpenSSL

编译64位库:

Windows 7 64位安装OpenSSL

注: 最后显示"passed all tests"表示测试成功

6、安装动态库

nmake -f ms\ntdll.mak install

编译32位库:

Windows 7 64位安装OpenSSL

编译64位库:

Windows 7 64位安装OpenSSL

注:成功则会在相应目录生成动态库及相关文件

7、说明

  • 以上编译的是release库,若编译debug库,则将以上第2步中的VC-WIN32或VC-WIN64A改成debug-VC-WIN32或debug-VC-WIN64A即可;
  • 以上编译的是动态库,若编译静态库,则将以上第4、5、6步中的ntdll.mak改成nt.mak即可;
  • 确保第4步之前没有已经编译过的文件,清除上次动态库的编译:nmake -f ms\ntdll.mak clean,清除上次静态库的编译:nmake -f ms\nt.mak clean

8、遇到的问题

  • 第4步编译32位库:

Windows 7 64位安装OpenSSL

解决方法:降低警告级别,编译动态库打开ntdll.mak文件,编译静态库则打开nt.mak,将CFLAG参数中的-W3改成-W0即可:

Windows 7 64位安装OpenSSL

  • 编译64位动态库成功,使用Dependency Walker查看生成的动态库无信息:

Windows 7 64位安装OpenSSL

解决方法:使用最新的64位版本的Dependency Walker(这个问题找了好久,开始一直以为是生成的动态库有问题!):

Windows 7 64位安装OpenSSL

9、拓展知识

  • 32位与64位:应用程序、操作系统、库的关系:

    http://blog.csdn.net/github_27886083/article/details/45456809

  • 使用VS自带的Dumpbin工具判断动态链接库.dll和应用程序.exe是32位还是64位:

    http://blog.csdn.net/jiang111_111shan/article/details/70186279

10、参考资料

https://wiki.openssl.org/index.php/Compilation_and_Installation#W64

http://bbs.csdn.net/topics/392193545?page=1

https://my.oschina.net/jathon/blog/1610759

https://software.intel.com/zh-cn/blogs/2013/12/22/windows-openssl


相关标签: OpenSSL