最近寫個小工具需要依賴openssl的靜態lib庫,本來是有其它同事編譯好的x32和x64版本的lib庫,可惜他編譯的lib庫是用vs2008環境編譯的。
我這個新項目使用vs2019開發,所以不能直接引用現有的lib庫,只能重新使用vs2019的編譯環境再編譯一個新的openssl靜態庫。
首先需要到openssl官網,或者github release頁面去下載最新的源碼
1)下載openssl源碼:
- https://github.com/openssl/openssl/releases
- https://www.openssl.org/source/
下載完後,解壓到e:\\openssl
目錄
2)下載Windows版本的Active Perl環境:
- https://www.activestate.com/products/perl/downloads/
Perl下載完,安裝即可
3)打開VS2019自帶的開發者命令行工具,一般安裝完vs2019,在開始菜單中可以找到
《Developer Command Prompt for VS 2019》這個工具,打開即可!
在剛纔打開的工具中切換到剛纔e:\\openssl
目錄下,然後開始執行以下3條命令進行編譯:
如果只想編譯出靜態庫libcrypto.lib,libssl.lib,則加入命令參數no-shared
perl Configure VC-WIN32 no-asm no-shared
ms\do_ms
nmake -f ms\ntdll.mak
具體命令用法,也可以參考openssl源碼目錄下的INSTALL.W32
文件
一些常用參數:
--debug
編譯debug版本
VC_WIN32
編譯32平臺
VC_WIN64A
編譯64 arm版
VC_WIN64I
編譯64 IA-64版
4)編譯完成後,使用lib文件
首先需要在項目屬性中,添加openssl的頭文件目錄openssl-1.0.2t\inc32
之後再把剛纔生成的lib庫文件放到項目根目錄下,然後就可以聲明並使用lib庫中的函數了
#include <openssl/rsa.h>
#pragma comment(lib, "libeay32static_vs2019.lib")
需要注意的是,由於編譯lib是選擇了no-shared靜態編譯,所以我們的vs項目屬性,也需要改成靜態的
參考: https://blog.csdn.net/ljttianqin/article/details/72978612