踩过很多坑,找到的很有价值的文章,感谢两位博主。
1.执行perl之前,先执行 ppm install dmake (没有安装过dmake的考虑)
(安装的具体步骤,这篇文章给出了)
为了方便我还是转载过来,做个记录没有排版,原文阅读性更强,3中的参考链接也很有详细,各有所长,可以综合对比解决问题
2.配置vs2019
属性-VC+±包含目录[include](c/c+±-常规)
属性-VC+±库目录[lib](链接器–常规)
属性-VC+±链接库目录[libssl.lib,libcrypto.lib](链接器–输入)
3.无法解析外部符号的,链接库目录加ws2_32.lib和Crypt.lib
参考链接:
我下载的是稳定发布版本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
2.1 我下载的是ActivePerl-5.26.1.2601-MSWin32-x64-404865.exe,下载地址 https://www.activestate.com/products/activeperl/downloads/
2.2 测试是否安装成功
命令行切换至安装目录,默认为 C:\Perl64\eg
输入 perl example.pl
输出 Hello from 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版本