|
一、编译OpenSSL
, j3 w" K! U: h 在编译OpenSSL前,需要正确安装Perl,因为在编译OpenSSL时需要使用到该程序。: J6 f" Y+ L* g# b9 |
下载最新版本的Perl:http://www.activestate.com/,然后安装之。" S9 _; U* \+ e
下载最新版本的OpenSSL:http://www.openssl.org/,然后将源码释放的x:/openssl目录中。5 e6 w3 @9 O9 }8 @/ k! F
进入openssl源码目录。; O* R+ r0 Y+ O& a* d
- cd x:/openssl
# K& ~ s0 M! d( J7 T$ o. F0 a
复制代码 以下为参照该目录下的文件INSTALL.W32的执行过程:
; q% n) Y- O% ]- s/ M 运行configure:8 o* \. Q% P0 c5 C! \
- perl Configure VC-WIN32 no-asm
复制代码1、[编译类型]可以选择以下: 参数 | 含义 | debug-VC-WIN32 | 编译32位debug版本 | VC-WIN32 | 编译32位release版本 | debug-VC-WIN64A | 编译64位debug版本 | VC-WIN64A | 编译64位release版本 | 2、设置编译类型的时候千万别忘记no-asm参数,关闭汇编模式,否则会出现类似如下错误:- Assembling: tmp32\sha1-586.asm
8 c+ v5 V8 N6 @ - tmp32\sha1-586.asm(1427) : error A2070: invalid instruction operands
0 Y* S X7 m4 d4 }# t. G - tmp32\sha1-586.asm(1571) : error A2070: invalid instruction operands3 C6 E* {2 c8 R3 g
- NMAKE : fatal error U1077: 'ml' : return code '0x1'
; z- Q4 V& A) F - Stop.
复制代码7 T9 m- p( t4 J5 O/ Y
& \) s' w. \/ O3、设置VC编译环境的时候,注意有32位和64位的区别,网络上大多数是因为没有注意这个导致编译失败。
' b3 h2 e8 n& ?
运行C:/Program Files/Microsoft Visual Studio/VC98/Bin/VCVARS32.BAT,使windows支持nmake 创建Makefile文件:
G6 [: G2 ]: H4 w9 X - ms/do_ms4 X) J8 P8 O1 M3 a9 |
复制代码 编译动态库:
* A3 Y+ m1 {) z2 M3 K - nmake -f ms/ntdll.mak
5 ?* D% ?- W" I/ y3 m q" v
复制代码 编译静态库:% ? ~) P: T1 y. a
- nmake -f ms/nt.mak" W! P' C+ p( r, F$ @
复制代码 测试动态库:; r" Q7 Y3 q' [5 |- U: V5 V
- nmake -f ms/ntdll.mak test
! {0 G) J, t6 y+ Q# q0 G2 P; D
复制代码 测试静态库:
3 }1 i% `/ b" }3 [7 x - nmake -f ms/nt.mak test
! V& R3 f2 u" [6 m$ t$ U; A$ g+ I$ }
复制代码 安装动态库:
3 Z0 K" O' P1 ? - nmake -f ms/ntdll.mak install$ M) O/ b- w+ m3 N! N5 q: X7 T
复制代码 安装静态库:/ ?$ [% N' [& z k1 w+ t" @
- nmake -f ms/nt.mak install% ?: M5 ]' ^/ p/ m0 H" R
复制代码 清除上次动态库的编译,以便重新编译:# J! d/ O$ y9 a C {. }! k8 Q2 K
- nmake -f ms/ntdll.mak clean- H) \) J' n, V. v% s: t
复制代码 清除上次静态库的编译,以便重新编译:
, e5 ] \9 Y0 l6 Q' i5 E - nmake -f ms/nt.mak clean+ E* O9 D Y6 W0 i
复制代码二、使用OpenSSL
K2 j( z* J1 }( p/ a 在VC中配置使用以上的函数库:
0 R2 w: W% t4 d5 t- V 点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。
C' ^0 }, t/ E) | 在"Show directories for:"的"Include files"选项中新增目录"C:/openssl/include";"Library files"选择中新增目录"C:/openssl/lib"。
g' ?' S* F6 I( F; |! l1 r5 O 然后在需要链接OpenSSL函数库的工程中编译时加入"libeay32.lib"就可以了。
8 R; M% K- q1 a9 l1 C F |