首页 > 系统相关 >Windows编译OpenSSL

Windows编译OpenSSL

时间:2022-10-12 23:22:41浏览次数:79  
标签:Console nmake Windows OpenSSL openssl Win32 编译 console

windows编译OpenSSL/Gmssl

准备工作

1.Perl的安装

从Perl官网(https://www.activestate.com/products/perl/downloads/)下载安装包直接安装就行了。安装完好后命令行执行【perl -v】就可以查看版本信息

2.OpenSSL源码

OpenSSL下载地址:

[Github]:https://github.com/openssl/openssl/tree/master

[码云]:https://gitee.com/mirrors/openssl/tree/master/ (个人推荐码云,服务器在国内下载快)

3.编译openssl

3.1 打开VS2022开发人员命令提示控制台(根据你安装的VS版本决定)。进入OpenSSL源码目录,然后执行

编译x86就选择x86开发人员命令提示控制台;编译x64就选择x64开发人员命令提示控制台;不要搞错了
perl Configure VC-WIN32 no-asm --prefix=D:\openssl_win32  // 生成32位库

perl Configure VC-WIN64A no-asm --prefix=D:\openssl_win64 // 生成64位库

解释以上命令:

  • VC-WIN32 表示编译选项生成32位的库
  • VC-WIN64A 表示编译选项生成64位的库
  • no-asm 表示不使用汇编,如果本地安装了nasm工具,可以不使用此选项
  • --prefix=D:xxx\xx 表示输出目录
注意:Perl在使用的时候可能会提示如下信息,然后退出
Can't locate Win32/Console.pm in @INC (you may need to install the Win32::Console module)

 (@INC contains: C:\Perl64\site\lib C:\Perl64\lib) at C:\Perl64\lib/ActivePerl/Config.pm line 400.

解决办法:根据提示信息在Perl安装目录找到Config.pm,然后找到400行左右将sub _warn 里面的代码注释,注释完之后如下所示:

# Prevent calling Win32::Console::DESTROY on a STDOUT handle

my $console;

sub _warn {

    #my($msg) = @_;

    #unless (-t STDOUT) {

#print "\n$msg\n";

#return;

    #}

    #require Win32::Console;

    #unless ($console) {

#$console = Win32::Console->new(Win32::Console::STD_OUTPUT_HANDLE());

    #}

    #my($col,undef) = $console->Size;

    #print "\n";

    #my $attr = $console->Attr;

    #$console->Attr($Win32::Console::FG_RED | $Win32::Console::BG_WHITE);

    #for (split(/\n/, "$msg")) {

#$_ .= " " while length() < $col-1;

#print "$_\n";

    #}

    #$console->Attr($attr);

    #print "\n";

}

3.2 执行以下代码开始编译

//OpenSSL1.1.0以后执行以下代码

nmake 
nmake test
nmake install


// OpenSSL1.1.0以前执行如下代码
ms\do_ms 
nmake -f ms\ntdll.mak 
nmake -f ms\ntdll.mak test 
nmake -f ms\ntdll.mak install
注1:从openssl 1.1.0版本以后就不再有ms\do_*.bat这样的文件,而是直接使用nmake命令就行了,详见官方文档
注2:执行test可能过不去。因为部分测试网络地址被墙了
注3:执行install可能过不去,因为需要使用管理员权限打开开发命令行

4.添加环境变量

这个看个人需求,需要就加到环境变量里面不需要就算了

5.gmssl的编译

  • gmssl的2.x.x版本是可以参照以上过程进行编译
  • gmssl的3.x.x版本暂未实验,据说只使用cmake即可

标签:Console,nmake,Windows,OpenSSL,openssl,Win32,编译,console
From: https://www.cnblogs.com/livio/p/16786504.html

相关文章