OpenSSL是一个广泛使用的安全套接字层密码库,这里讲解一下如何编译OpenSSL生成动态库。

编译所需的文件压缩包下载链接如下。

下载地址 下载完所需编译的压缩包后解压可以看到如下两个文件

openresty 动态更新配置文件 openssl生成动态库_vs2015

1 安装ActivePerl和dmake

解压Perl_dmake,可以看到一个安装文件,运行这个exe程序

openresty 动态更新配置文件 openssl生成动态库_编译_02


安装成功后接下来安装dmake,以管理员权限进入vs2015开发人员命令提示符

openresty 动态更新配置文件 openssl生成动态库_编译_03


输入命令:ppm install dmake

openresty 动态更新配置文件 openssl生成动态库_编译_04


dmake安装完成后如下图所示:

openresty 动态更新配置文件 openssl生成动态库_编译_05

2 编译OpenSSL的32位动态库

解压openssl-OpenSSL_1_1_0f.zip,然后还是以管理权限进入vs2015开发人员命令提示符
使用cd 命令进入OpenSSL解压后的目录

cd C:\md5\openssl-OpenSSL_1_1_0f

配置如何编译OpenSSL,这一步非常重要,可以自己配置编译的库为动态库还是静态库,32位的还是64位的。

perl Configure VC-WIN32  shared no-asm --prefix="C:/md5/openssl_win32_release" --openssldir="C:/md5/openssl_win32_release/ssl"

下面解释一下上面的命令prefix="C:/md5/openssl_win32_release"表示一会编译生成的文件在这个目录下编译,这个目录是自己新建的,用户自己指定;openssldir="C:/md5/openssl_win32_release/ssl"表示编译生成的OpenSSL存放目录,当然这个目录也是自己新建的,用户都可以按照自己的想法指定存放目录。

配置完成效果如下:

openresty 动态更新配置文件 openssl生成动态库_OpenSSL_06


接下来输入编译指令:

nmake

openresty 动态更新配置文件 openssl生成动态库_openresty 动态更新配置文件_07


测试编译是否正确

nmake test

出现下图表示测试通过

openresty 动态更新配置文件 openssl生成动态库_C++_08


安装编译的openssl库

nmake install

安装完成,如下图所示

openresty 动态更新配置文件 openssl生成动态库_编译_09


清理安装完成后的一些无用文件

nmake clean

打开动态库的存放目录,可以看到OpenSSL动态库已经生成成功。

openresty 动态更新配置文件 openssl生成动态库_OpenSSL_10

3 补充

要编译成静态库
在配置的这一步命令加上no-shared如下

perl Configure VC-WIN32  shared no-asm no-shared --prefix="C:/md5/openssl_win32_release" --openssldir="C:/md5/openssl_win32_release/ssl"

编译成win64版本,在系统版本里改成VC-WIN64A或者VC-WIN64I

perl Configure VC-WIN64A  shared no-asm --prefix="C:/md5/openssl_win32_release" --openssldir="C:/md5/openssl_win32_release/ssl"

编译成debug版本的,加上–debug

perl Configure VC-WIN32  shared no-asm --debug --prefix="C:/md5/openssl_win32_release" --openssldir="C:/md5/openssl_win32_release/ssl"

编译成msvc模式为MT的
找到C:\md5\openssl-OpenSSL_1_1_0f\configdata.pm文件,搜索/MD将其修改为/MT

openresty 动态更新配置文件 openssl生成动态库_C++_11


找到C:\md5\openssl-OpenSSL_1_1_0f\makefile,搜索/MD将其修改为/MT

openresty 动态更新配置文件 openssl生成动态库_C++_12