踩过很多坑,找到的很有价值的文章,感谢两位博主。 1.执行perl之前,先执行 ppm install dmake (没有安装过dmake的考虑) (安装的具体步骤,这篇文章给出了)https://blog.csdn.net/qq0824/article/details/96483464 为了方便我还是转载过来,做个记录没有排版,原文阅读性更强,3中的参考链接也很有详细,各有所长,可以综合对比解决问题 2.配置vs2019 属性-VC+±包含目录[include](c/c+±-常规) 属性-VC+±库目录[lib](链接器–常规) 属性-VC+±链接库目录[libssl.lib,libcrypto.lib](链接器–输入) 3.无法解析外部符号的,链接库目录加ws2_32.lib和Crypt.lib 参考链接:https://blog.csdn.net/kelvin_yan/article/details/105078461
我下载的是稳定发布版本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 最终编译生成文件可到地址 https://download.csdn.net/download/qq0824/11393558 进行下载
第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版本