OpenSSL 在 Windows 上需自行編譯方能獲得完整的開發庫與工具。本文記錄在 Windows XP SP2 + Visual Studio 2005 + Perl 5.8.6 + OpenSSL 0.9.8 環境下,從準備、配置、編譯到開發環境設定的完整流程,並整理常見錯誤對策。
VC++ 6.0 編譯 OpenSSL 常缺少 ml.exe、cl.exe 且出現 MASM 錯誤,建議直接使用 VS2005。
下載:ActiveState 官網
安裝路徑預設 C:\Perl。較新版本可能相容性較差,測試階段建議用 5.8.6。
下載:OpenSSL 官網
產品開發請用最新版;測試階段舊版相容性較好。
若僅需使用而非開發,可直接下載預編譯二進制:官方相關二進制頁。
C:\OpenSSLC:\OpenSSL,執行 perl Configure VC-WIN32VC\Bin,執行 VCVARS32.BATC:\OpenSSL,執行 ms\do_ms(不使用組語)ms\do_masm(MASM)、ms\do_nasm(NASM)、ms\do_ntnmake -f ms\ntdll.makout32dll:libeay32.dll, libeay32.lib, ssleay32.dll, ssleay32.lib, openssl.exeC:\OpenSSL\out32dll 加入環境變數 PathC:\OpenSSL\inc32C:\OpenSSL\out32dll#include <openssl/ssl.h>
#include <openssl/err.h>
#include <openssl/bio.h>
#pragma comment(lib, "libeay32.lib")
#pragma comment(lib, "ssleay32.lib")
| 錯誤現象 | 解決方案 |
|---|---|
NMAKE 不被辨識 | 使用「Visual Studio 2005 Command Prompt」啟動 CMD,或將 C:\Program Files\Microsoft Visual Studio 8\VC\bin 加入 PATH |
fatal error U1077: 'cl'/'ml'/'link' | 參考 此篇分析,通常為環境變數或路徑問題 |
POSIX name deprecated... _read 導致 /WX 錯誤 | 編輯 ms\ntdll.mak,移除 CFLAG 中的 /WX 旗標 |
_md5_block_asm_host_order unresolved external | 改用 ms\do_masm 產生 makefile 重新編譯 |
install.w32/install.w64 文件(直接拖入瀏覽器閱讀)Nginx 防盜鏈配置:基於 Referer 的訪問控制實戰
Canonical 發布支援平板電腦的 Ubuntu Linux 系統
SecureCRT 使用 rz/sz 實現 Linux 與 Windows 文件高速傳輸
tcpdump 抓包實戰指南:過濾表達式、常用選項、輸出解讀與 Wireshark 配合分析
為什麼 MBR 分區表最多只能有 4 個主分區?深度解析 64 字節限制與邏輯分區突破方案
Linux啟用多核心(SMP)支援:安裝kernel-smp套件
Linux C/C++ 開發工具鏈全景:GCC、GDB、xxgdb、calls、calltree、cproto、indent、gprof 實戰指南