OpenSSL-3.5.1编译 & namke环境配置【windows】

用nmake编译,不要使用 mingw,mingw支持很差。

nmake是VS捆绑的

1. 安装 Visual Studio 2022

显示找不到 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

image

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

image

image

环境变量 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

image

image

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中,保证动态库可以找到

image

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"
)

image

posted @ 2025-07-10 05:59  丘狸尾  阅读(5)  评论(0)    收藏  举报