openssl vs2015編譯靜態庫
阿新 • • 發佈:2019-02-15
去下載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