[Windows] Windows平台下编译OpenSSL

准备工作:

1.Perl

建议使用5.30以上版本,本人在使用时发现28的版本好像在配置openssl的时候有问题。

下载路径:http://strawberryperl.com/

ps:ActivePerl 和 Strawberry Perl 都可以

2.nasm

如果不适用汇编库,则可以不下载

https://www.nasm.us/pub/nasm/stable/

3.VS 编译环境

主要为了使用nmake


 

配置及编译:

1.打开包含开发环境的命令行:

2.确保Perl可用,nasm可用

3.切换到源码目录下,运行下述命令:

Perl Configure no-asm VC-WIN32

如果是编译64位,则:

Perl Configure no-asm VC-WIN64A

之后会提示已经配置完毕。

4.开始编译:

执行如下命令:

nmake

此时可以在源码同级目录下获得如下文件:

openssl的输出有三个部分:

1)命令行 :openssl.exe

2)加密库:(动态库)libcrypto.lib 和 libcrypto-1_1.dll

                    (静态库)libcrypto_static.lib

3)协议库:(动态库)libssl.lib 和 libssl-1_1.dll

                    (静态库)libssl_static.lib

 

5.运行测试用例:

执行如下命令:

nmake test


 

源码目录:

apps  ---  openssl.exe

ssl  ---  libssl.lib

crypto  ---  libcrypto.lib


 

PS:

建议每个架构版本(WIN32/WIN64)都配置一个独立的源码目录,如果一次编译出现问题,建议删除原目录,在重新创建目录重新执行上述流程。

如果真的想在同一个源码目录下编译输出不同架构版本,则需要再Configure的时候指定 --prefix 路径,同时在编译了某个版本后,需要运行 nmake clean 清除之前生成的中间临时文件后,再进行下一次 Configure 和 nmake。

这样做比较麻烦也容易出现未知的错误。