Win7 x64 下編譯 OpenSSL 常因缺少 Windows SDK 頭文件(windows.h、stdlib.h)、Perl 環境未配置、uplink.c 組裝報錯而失敗。本文整理最小依賴清單、環境變量設置、編譯命令全流程,並附 Intel 官方中文教程鏈接作為權威參考。
| 工具 | 版本建議 | 下載/安裝要點 |
|---|---|---|
| ActivePerl / Strawberry Perl | 5.32+ | 安裝後驗證 perl -v;加入 PATH |
| NASM | 2.15+ | 重命名 nasm.exe 置於 PATH 目錄 |
| Windows SDK / Visual Studio | Win10 SDK (10.0.19041+) 或 VS2019 Build Tools | 必須包含 Windows Headers、CRT、x64 編譯器 |
$env:PATH += ";C:\Perl64\bin;C:\nasm;C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64"
# 確保 cl.exe、link.exe、rc.exe 可直接調用
D:\openssl-3.0.12。perl Configure VC-WIN64A no-asm --prefix=D:\openssl-install
# no-asm 避開 uplink.c 組裝問題;生產環境建議啟用 asm 但需完整 NASM/VS 配置
nmake
nmake test # 可選,耗時較長
nmake install
產物位於 D:\openssl-install\bin(libcrypto.dll、libssl.dll、openssl.exe)。
| 錯誤信息 | 原因 | 解決 |
|---|---|---|
| fatal error C1083: windows.h: No such file | 缺 Windows SDK 或 include 路徑未加入 | 安裝 Win10 SDK;VCVARSALL.BAT 正確調用 |
| stdlib.h not found | CRT 頭文件缺失 | VS Installer 勾選 "C++ ATL for v142 build tools (x86 & x64)" |
| uplink.c: undefined symbol | NASM 版本過低或未啟用 asm | 升級 NASM 或加 no-asm 選項 |
| LNK2001: unresolved external symbol _OPENSSL_cleanup | 多版本庫混用 | 清理環境變量 LIB/INCLUDE,重新開啟終端 |
Intel 官方中文教程(含 VS2017/2019 圖文步驟):
https://software.intel.com/zh-cn/blogs/2013/12/22/windows-openssl
OpenSSL 官方 Wiki:Compilation and Installation
D:\openssl-install\bin\openssl.exe version
# OpenSSL 3.0.12 24 Oct 2023 (Library: OpenSSL 3.0.12 24 Oct 2023)
若需動態鏈接至 C/C++ 項目,將 bin 加入系統 PATH,或在 CMake 中 find_package(OpenSSL REQUIRED) 指定 OPENSSL_ROOT_DIR。