軟件需要:
openssl-1.1.0b
visual studio 2010(cn_visual_studio_2010_ultimate_x86_dvd_532347.iso)
perl:ActivePerl-5.22.1.2201
nasm-2.12.03rc1-win32
環境准備:
1.從官網下載ActivePerl-5.22.1.2201並一路確認安裝到硬盤中
2.打開命令提示符,第一次輸入cpan會默認下載mingw,等待數分鍾以后他會默認解壓安裝。
3.待mingw自動安裝以后將會出現 cpan>提示符,在里面分別輸入
install Test::More
install Text::Template
4.下載nasm-2.12.03rc1-win32並解壓到d:\develop\2.12.03rc1\
在系統環境變量PATH添加D:\develop\nasm-2.12.03rc1;
以上准備工作做好了
編譯:
編譯過程中用過VC6/VC7均編譯失敗,后來網上找到原因:
openssl-1.0.0a必須用vs2008編譯,VC6+nasm32是無法編譯了,因為openssl-1.0.0a要求cl.exe的版本比較高,vc6無法編譯,所以用vs2008編譯。
本文選用了2010
vc7報錯:
async_win.obj : error LNK2019: unresolved external symbol _ConvertFiberToThread referenced in function _async_local_cleanup async_win.obj : error LNK2019: unresolved external symbol _ConvertThreadToFiber referenced in function _async_fibre_init_dispatcher async.obj : error LNK2019: unresolved external symbol _DeleteFiber referenced in function _async_job_free async.obj : error LNK2019: unresolved external symbol _SwitchToFiber referenced in function _async_start_func async.obj : error LNK2019: unresolved external symbol _CreateFiber referenced in function _ASYNC_init_thread b_print.obj : error LNK2019: unresolved external symbol __ftol2 referenced in function _roundv b_print.obj : error LNK2019: unresolved external symbol __aulldvrm referenced in function _fmtint bss_dgram.obj : error LNK2019: unresolved external symbol __aulldvrm referenced in function _dgram_ctrl ct_prn.obj : error LNK2001: unresolved external symbol __aulldvrm threads_win.obj : error LNK2019: unresolved external symbol _InitializeCriticalS ectionAndSpinCount referenced in function _CRYPTO_THREAD_lock_new libcrypto-1_1.dll : fatal error LNK1120: 8 unresolved externals NMAKE : fatal error U1077: 'link' : return code '0x1' Stop.
vc6報錯:
crypto\ec\curve25519.c(897) : warning C4244: '=' : conversion from '__int64 ' to 'int ', possible loss of data
crypto\ec\curve25519.c(898) : warning C4244: '=' : conversion from '__int64 ' to 'int ', possible loss of data
crypto\ec\curve25519.c(3298) : warning C4244: '=' : conversion from '__int64 ' to 'int ', possible loss of data
crypto\ec\curve25519.c(3299) : warning C4244: '=' : conversion from '__int64 ' to 'int ', possible loss of data
crypto\ec\curve25519.c(3300) : warning C4244: '=' : conversion from '__int64 ' to 'int ', possible loss of data
crypto\ec\curve25519.c(3301) : warning C4244: '=' : conversion from '__int64 ' to 'int ', possible loss of data
crypto\ec\curve25519.c(3302) : warning C4244: '=' : conversion from '__int64 ' to 'int ', possible loss of data
crypto\ec\curve25519.c(3303) : warning C4244: '=' : conversion from '__int64 ' to 'int ', possible loss of data
crypto\ec\curve25519.c(3304) : warning C4244: '=' : conversion from '__int64 ' to 'int ', possible loss of data
crypto\ec\curve25519.c(3305) : warning C4244: '=' : conversion from '__int64 ' to 'int ', possible loss of data
crypto\ec\curve25519.c(3306) : warning C4244: '=' : conversion from '__int64 ' to 'int ', possible loss of data
crypto\ec\curve25519.c(3307) : warning C4244: '=' : conversion from '__int64 ' to 'int ', possible loss of data
Stop.
以下是完整的編譯安裝步驟:
perl Configure VC-WIN32 zlib,zlib-dynamic --with-zlib-include=F:\zlib-1.2.8 --with-zlib-lib=F:\zlib-1.2.8\zdll.lib
nmake
nmake test
nmake install
成功以下將默認把openssl安裝到C:\Program Files\OpenSSL,編譯成品支持zlib/gzip解壓縮,編程時請把zlib1.dll拷貝到程序目錄
zlib-dynamic
Like "zlib", but has OpenSSL load the zlib library
dynamically when needed. This is only supported on systems
where loading of shared libraries is supported.
按照官方INSTALL所說zlib將會按需動態調用。
編程成功還沒測試, 其中zlib是用vc6編譯,openssl用vc10編譯。