OpenSSL-3.5.1编译 & namke环境配置【windows】
用nmake编译,不要使用 mingw,mingw支持很差。
nmake是VS捆绑的
1. 安装 Visual Studio 2022
- 下载地址:Visual Studio 2017 社区版
- 安装时选择 “使用 C 的桌面开发” 工作负载,确保安装 C 编译工具。
显示找不到 nmake 命令(微软又吃屎了)
nmake : 无法将“nmake”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确
,然后再试一次。
参考了这篇文章
https://blog.csdn.net/weixin_44269035/article/details/135666928
1) 配置 MSVC 系统变量
在系统变量Path中添加
# BIN:
D:\Software\VS\VC\Tools\MSVC\14.44.35207\bin\Hostx64\x64 # 包含cl.exe文件
D:\Software\VS\VC\Tools\MSVC\14.44.35207\bin\Hostx64\x86 # 包含ml.exe文件
D:\Software\VS\Common7\IDE
D:\Software\VS\Common7\Tools
新建系统变量LIB 并添加路径
D:\Software\VS\VC\Tools\MSVC\14.44.35207\lib\x64 # MSVC的 `lib` 路径
; 分隔

新建系统变量INCLUDE 并添加路径
D:\Software\VS\VC\Tools\MSVC\14.44.35207\include #MSVC的头文件路径
验证
nmake --version

2) Windows SDK 环境变量配置
不配置会有如下报错
D:\Software\openssl-3.5.1\include\openssl/aes.h(21): fatal error C1083: 无法打开包括文件: “stddef.h”: No such file or directory
Path 中添加
C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64 # rc
环境变量 INCLUDE 中添加
# INCLUDE:
C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared
C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt
C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um
C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\winrt


环境变量 LIB 中添加
# LIB:
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.26100.0\ucrt\x64
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.26100.0\um\x64


2. 安装Perl
- 下载地址:Perl 下载
- 安装完成后,将 Perl 的安装路径添加到系统环境变量中。
或者直接
winget install StrawberryPerl.StrawberryPerl
3. 安装 NASM
- 下载地址:NASM 下载
- 安装完成后,将 NASM 的安装路径添加到系统环境变量中。
或者直接
winget install nasm.NASM
4. 编译 OpenSSL
OpenSSL 的编译需要 Perl 和 NASM 的支持,以下是具体步骤:
# 进入OpenSSL源码目录
cd openssl-1.1.1
# 配置32位编译环境
perl Configure VC-WIN32
# 编译
nmake
or
# 配置64位编译环境
perl Configure VC-WIN64A
# 编译
nmake
perl 跨平台脚本语言
1)将编译后目录添加到Path中,保证动态库可以找到

5. 示例测试
#include <iostream>
#include <openssl/evp.h>
int main() {
OpenSSL_add_all_algorithms();
const EVP_MD* md = EVP_sha256();
if (md) {
std::cout << "OpenSSL 3.0配置成功!" << std::endl;
std::cout << "支持的哈希算法: " << EVP_MD_name(md) << std::endl;
}
else {
std::cout << "OpenSSL配置失败!" << std::endl;
return 1;
}
EVP_cleanup();
return 0;
}
cmake_minimum_required (VERSION 3.8)
project ("my_openssl_app")
# 将源代码添加到此项目的可执行文件。
add_executable (my_openssl_app "main.cpp" "main.h")
# 设置 OpenSSL 的路径
set(OPENSSL_ROOT_DIR "D:/Software/openssl-3.5.1")
# 包含头文件
include_directories("${OPENSSL_INCLUDE_DIR}/include")
# 链接库
target_link_libraries(my_openssl_app
"${OPENSSL_ROOT_DIR}/libcrypto.lib"
"${OPENSSL_ROOT_DIR}/libssl.lib"
)


浙公网安备 33010602011771号