1、安装 perl
地址: https://www.perl.org/get.html
安装好后配置到环境变量中即可,打开CMD,检查一下:perl -version
2、安装NASM
安装好后配置到环境变量中即可,打开CMD,检查一下:nasm -version
3、编译
OpenSSL 地址:https://www.openssl.org/source/
我这里下载的是 openssl-1.1.1i.tar.gz ,然后解压,打开VS命令提示符
接着在命令提示符中执行:
// 1、切换到你的源码目录
pushd F:\openssl-1.1.1i
// 2、执行配置,prefix 的路径你自己设置
// 动态链接库版本
perl Configure VC-WIN32 no-tests --debug --prefix="F:\openssl-1.1.1i\build"
// 静态库版本
perl Configure VC-WIN32 no-shared no-tests --debug --prefix="F:\openssl-1.1.1i\build"
// 3、编译
nmake
// 4、安装
nmake install
4、关于更改最终编译的文件名称问题
在执行完第2条命令后,我们到源码目录就会看到叫 makefile 的文件,复制一份备用,文本模式打开 makefile
批量替换以下内容:
1、文件名
libcrypto.lib =====>>> libcrypto_d.lib
libcrypto-1_1.pdb =====>>> libcrypto-1_1_d.pdb
libcrypto-1_1.dll =====>>> libcrypto-1_1_d.dll
libssl.lib =====>>> libssl_d.lib
libssl-1_1.pdb =====>>> libssl-1_1_d.pdb
libssl-1_1.dll =====>>> libssl-1_1_d.dll
如果生成的是动态库版本,还需要更改下 openssl-1.1.1i\util\mkdef.pl ,复制一份,改名为 mkdef_d.pl,编辑 mkdef_d.pl, 搜索: Definition file for the DLL
sub print_def_file
{
(*OUT,my $name,*nums,my @symbols)=@_;
my $n = 1; my @e; my @r; my @v; my $prev="";
my $liboptions="";
my $idxcrypt = index($name,"libssl");
$name = ($idxcrypt > -1) ? "libssl-1_1_d" : "libcrypto-1_1_d";
my $libname = $name;
my $http_vendor = 'www.openssl.org/';
my $version = get_version();
my $what = "OpenSSL: implementation of Secure Socket Layer";
my $description = "$what $version, $name - http://$http_vendor";
my $prevsymversion = "", $prevprevsymversion = "";
红色部分为新增的内容,保存一下,再去修改makefile,将 makefile 中的: mkdef.pl 替换成 mkdef_d.pl 即可
2、运行时库
搜索:/MDd,/Md,/MTd,/MT,根据个人需求,把这个替换成你想要的运行时库方式,至于他们的区别,自行百度
搜索:/O2, /Od, 自行替换成你想要的优化方式