1 下载openssl源码
我下载的是稳定发布版本OpenSSL_1_1_1c,openssl官网下载地址https://www.openssl.org/source/,github下载地址https://github.com/openssl/openssl/releases
另,编译说明里,如果要本地优化,还需要下载Nasm,但实际上我们没那么多要求,直接用no-asm选项可以跳过,因此不需要下载Nasm,如要下载,Nasm下载地址为https://sourceforge.net/projects/nasm/
2 下载安装ActivePerl
3 下载安装Visual Studio 2015或其它VS版本
4 编译32位打开"VS2015 x86 本机工具命令提示符",编译64位打开"VS2015 x64 本机工具命令提示符",进入到openssl解压目录,cd /d E:\tools\openssl\openssl-OpenSSL_1_1_1c,每次编译之前重新解压一个新的临时目录E:\tools\openssl\openssl-OpenSSL_1_1_1c以免编译时报错
5 编译,等待执行结束
编译类型 | 编译执指令 |
---|---|
编译32位动态库debug版本 | perl Configure debug-VC-WIN32 no-asm --prefix="E:\tools\openssl\openssl111\build_debug32" |
编译32位动态库Release版本 | perl Configure VC-WIN32 no-asm --prefix="E:\tools\openssl\openssl111\build_release32" |
编译64位动态库debug版本 | perl Configure debug-VC-WIN64A no-asm --prefix="E:\tools\openssl\openssl111\build_debug64" |
编译64位动态库Release版本 | perl Configure VC-WIN64A no-asm --prefix="E:\tools\openssl\openssl111\build_release64" |
编译32位静态库debug版本 | perl Configure debug-VC-WIN32 no-asm no-shared --prefix="E:\tools\openssl\openssl111\build_debug32_static" |
编译32位静态库Release版本 | perl Configure VC-WIN32 no-asm no-shared --prefix="E:\tools\openssl\openssl111\build_release32_static" |
编译64位静态库debug版本 | perl Configure debug-VC-WIN64A no-asm no-shared --prefix="E:\tools\openssl\openssl111\build_debug64_static" |
编译64位静态库Release版本 | perl Configure VC-WIN64A no-asm no-shared --prefix="E:\tools\openssl\openssl111\build_release64_static" |
6 执行nmake等待执行结束
7 执行 nmake test 等待执行结束(比较耗时,可以不执行验证)
8 执行 nmake install 等待执行结束
9 至此完成,在--prefix=指定的目录下会生成目录文件夹bin、html、include、lib四个目录,
编译生成文件:
静态库版本:头文件、libcrypto.lib、libssl.lib
动态库版本(32位):头文件、libcrypto.lib、libssl.lib、libcrypto-1_1.dll、libssl-1_1.dll
动态库版本(64位):头文件、libcrypto.lib、libssl.lib、libcrypto-1_1-x64.dll、libssl-1_1-x64.dll
第6步nmake时编译提示错误:NMAKE : fatal error U1077: “rc”: 返回代码“0x1”
分析原因:
将Rc.exe路径添加到系统环境变量PATH,我的路径是:
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\x64
注意:
如果是需要静态库,需要加上no-shared参数,且必须先安装dmake工具,用vc自带的nmake会失败,安装指令是在perl安装完成后,以管理员权限打开命令行,执行ppm install dmake,这需要联网执行。
加了 no-shared 以后,最后的nmake install命令可能会失败,这时候需要手动拷贝一下。
另:
参数 | 含义 |
---|---|
debug-VC-WIN32 | 编译32位debug版本 |
VC-WIN32 | 编译32位release版本 |
debug-VC-WIN64A | 编译64位debug版本 |
VC-WIN64A | 编译64位release版本 |