4.3 KiB
Raw Blame History

title, categories, tags, draft, slug, date, lastmod
title categories tags draft slug date lastmod
Windows 11 下使用 VS2022 源码编译 OpenSSL 3.1.3
程序人生
false openssl_win_build 2019-08-20 13:00:00 2023-10-06T18:34:00+0800

本文持续更新,跟进当前日期最新的 OpenSSL 版本,最后更新日期见文章末

安装 Strawberry Perl

前往 Strawberry Perl 官网下载并安装 Strawberry Perl 这里选择的是目前最新版本 Strawberry Perl 5.32.1.1 安装过程中务必选择完整安装 安装完成之后会自动添加环境变量,无需手动添加

检查是否已安装

perl -v

安装 NASM

2021/03/25 更新:以后教程不编译汇编代码,此步骤省略

前往 NASM 官网下载并安装 NASM 这里选择的是 Stable 的 2.15.05

安装完成后要将NASM的路径添加到环境变量安装程序不会自动添加

下载源代码

前往 OpenSSL 官网下载 openssl-3.1.3.tar.gz 并解压

编译

VC编译环境

Visual Studio 在安装时必须勾选 Windows C++ 的开发环境,不然没法打开开发人员命令提示符

Snipaste_2020-04-23_14-08-13.png

启动命令行提示工具

【2020年5月25日更新】 使用 VS2022 的开发人员提示工具切换到源码目录注意选择要编译的位数所对应的版本不要选择cross版本。所有的选项都要统一编译32位的就启动x86配置Makefile时为命令行为VC-WIN3264位同理本文以编译64位为例。

根据下图打钩的图标,确定需要编译的位数,选择合适的命令提示符。 选择合适的命令行版本

进入源码目录

cd /d C:\openssl-3.1.3

配置 Makefile

版本 对应架构命令行
64位 VC-WIN64A
32位 VC-WIN32

本文采用64位

perl Configure VC-WIN64A no-asm

如果编译静态链接版本的二进制程序,加一个 no-shared 选项即可。

perl Configure VC-WIN64A no-asm no-shared

根据自己需要,二者选一即可

默认编译后安装在以下路径:

版本 默认安装路径
64位 C:\Program Files\OpenSSL
32位 C:\Program Files (x86)\OpenSSL

若想要自定义安装路径,添加 --prefix 选项即可

perl Configure VC-WIN64A no-asm --prefix=D:\OpenSSL\3.1.3

开始编译及安装

执行 nmake 开始编译 整个过程视机器配置而定单线程编译持续约5-10分钟

nmake

如果想加速编译,使用 Qt 的 jom 工具即可使用 -j 选项来指定构建的线程数, jom 可以在这里下载,将它解压然后添加到环境变量即可,下面的命令使用 8 线程编译

jom -j 8

安装二进制和库

nmake install_sw

使用 install_sw 代替 install 是因为默认 install 会生成 40M 左右的 HTML 文档,若不需要就使用 install_sw 仅安装二进制文件和库

添加环境变量

将编译后的安装目录下的 bin 文件夹添加到系统 Path 目录下 打开 cmd 使用 openssl version -a 测试

$ openssl version -a
OpenSSL 3.1.3 19 Sep 2023 (Library: OpenSSL 3.1.3 19 Sep 2023)
built on: Fri Oct  6 10:55:51 2023 UTC
platform: VC-WIN64A
options:  bn(64,64)
compiler: cl /Zi /Fdossl_static.pdb /Gs0 /GF /Gy /MD /W3 /wd4090 /nologo /O2 /FS -DL_ENDIAN -DOPENSSL_PIC
OPENSSLDIR: "C:\Program Files\Common Files\SSL"
ENGINESDIR: "C:\Program Files\OpenSSL\lib\engines-3"
MODULESDIR: "C:\Program Files\OpenSSL\lib\ossl-modules"
Seeding source: os-specific
CPUINFO: OPENSSL_ia32cap=0x7ef8320b078bffff:0x400004219c91a9

清理生成的中间文件

nmake clean

下载

附上我编译的动态版及静态版 点击下载

结尾语

如果在配置或者编译有任何问题或者报错,请在下方留言或直接在关于页面联系我~