1. 程式人生 > >openssl vs2015編譯靜態庫

openssl vs2015編譯靜態庫

去下載openssl-1.0.2m後,按如下流程編譯,會報錯

1. 安裝ActivePerl, 並新增環境變數(可以預設勾選,或者手動新增,如path=d:\perl\bin)。

2. 解壓openssl。

3. 點選 windows 開始->所有應用->vs2015->開發者命令提示(Developer Command Prompt for 2015)。

4. CD到解壓後的openssl的根目錄。

5. 執行命令:perl Configure VC-WIN32(或者VC-WIN64A,取決於編譯庫型別,可以用–prefix=路徑指定生成路徑).

6. ms\do_ms.bat(建立makefile檔案,64位需要使用ms\do_
win64aA.bat) 7. 執行nmake - f ms\ntdll.mak(編譯動態庫)。 8. 執行nmake - f ms\ntdll.mak test檢視庫是否有問題。 9. 執行nmake - f ms\ntdll.mak install 。
Building OpenSSL
    link /nologo /subsystem:console /opt:ref /debug /out:out32\md4test.exe @C:\Users\ADMINI~1\AppData\Local\Temp\nm11FA.tmp
libeay32.lib(cryptlib.obj) : error LNK2019: 無法解析的外部符號 _OPENSSL_ia32_cpuid,該符號在函式 _OPENSSL_cpuid_setup 中被引用
libeay32.lib
(cryptlib.obj) : error LNK2001: 無法解析的外部符號 _OPENSSL_ia32cap_P libeay32.lib(sha1dgst.obj) : error LNK2019: 無法解析的外部符號 _sha1_block_data_order,該符號在函式 _SHA1_Final 中被引用 libeay32.lib(sha256.obj) : error LNK2019: 無法解析的外部符號 _sha256_block_data_order,該符號在函式 _SHA256_Final 中被引用 libeay32.lib(sha512.obj) : error LNK2019: 無法解析的外部符號 _sha512_block_data_order,該符號在函式 _SHA512_Final 中被引用 libeay32.lib
(md5_dgst.obj) : error LNK2019: 無法解析的外部符號 _md5_block_asm_data_order,該符號在函式 _MD5_Final 中被引用 out32\md4test.exe : fatal error LNK1120: 6 個無法解析的外部命令

此時正確的32位debug靜態庫順序是

perl Configure VC-WIN32 no-asm no-hw --prefix=c:\some\openssl\dir

perl util\mkfiles.pl >MINFO  
perl util\mk1mf.pl debug no-asm VC-WIN32 >ms\nt.mak  

perl util\mkdef.pl 32 libeay > ms\libeay32.def  
perl util\mkdef.pl 32 ssleay > ms\ssleay32.def  
nmake -f ms\nt.mak install

參考