|
一、编译OpenSSL7 T, \' F8 C% ^) L1 k" z
在编译OpenSSL前,需要正确安装Perl,因为在编译OpenSSL时需要使用到该程序。
! F i4 f' o' I8 i9 A: Q9 u$ d; L: s 下载最新版本的Perl:http://www.activestate.com/,然后安装之。
6 z4 a7 v, n* `' I% Q' @, j 下载最新版本的OpenSSL:http://www.openssl.org/,然后将源码释放的x:/openssl目录中。
. I. H% |8 D S% c1 z 进入openssl源码目录。
2 n& J7 c$ U; P5 Y1 h( D3 {) ~ - cd x:/openssl
% f1 T, t, F2 R! Q9 p" b& x
复制代码 以下为参照该目录下的文件INSTALL.W32的执行过程:
) C1 |: ~1 n* h7 I: L 运行configure:$ p) b- G* ?8 S; 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
& p z" u, p# V- o2 Y+ f6 F - tmp32\sha1-586.asm(1427) : error A2070: invalid instruction operands
5 P. x( P$ E# ^" G4 V6 p2 |, e( U - tmp32\sha1-586.asm(1571) : error A2070: invalid instruction operands
2 w% x6 K3 }) h3 C - NMAKE : fatal error U1077: 'ml' : return code '0x1'
2 U1 A7 |1 d! r5 }$ f: i3 r - Stop.
复制代码
* y8 c# r& t4 n5 _, |( Z
; r' v( O8 e. ]- h; N1 I3、设置VC编译环境的时候,注意有32位和64位的区别,网络上大多数是因为没有注意这个导致编译失败。
0 ~9 |6 T0 J% _% j" }
运行C:/Program Files/Microsoft Visual Studio/VC98/Bin/VCVARS32.BAT,使windows支持nmake 创建Makefile文件:% I% j2 F, E% u, b& Z
- ms/do_ms6 J/ Z* N6 y$ G: W$ B2 s; {
复制代码 编译动态库:
1 q1 J+ C Y6 T - nmake -f ms/ntdll.mak
* ^% X, g$ C5 N; Z P6 g
复制代码 编译静态库:
' R% W8 L, n' w) x - nmake -f ms/nt.mak/ r3 A2 Y- B' {$ v2 Q% `
复制代码 测试动态库:
% i3 u2 m( b* X" M( G - nmake -f ms/ntdll.mak test) L3 Q/ ?8 V! ]" n" i3 b# _
复制代码 测试静态库:+ S8 H) @3 |0 H) l
- nmake -f ms/nt.mak test! ?4 L% C; @( u& M7 x
复制代码 安装动态库:
- n& _7 \/ w6 i - nmake -f ms/ntdll.mak install0 `8 I7 ?8 \6 @+ t! W; Q
复制代码 安装静态库:, V8 a. c$ j5 m+ m
- nmake -f ms/nt.mak install! X2 q" P' Z9 F) L$ s
复制代码 清除上次动态库的编译,以便重新编译:
' I6 T; E. j- G/ k - nmake -f ms/ntdll.mak clean: P: f6 s6 m; p2 Z: F- {, H; A
复制代码 清除上次静态库的编译,以便重新编译:
7 i1 u6 ]9 Z" ~) B$ m7 x - nmake -f ms/nt.mak clean) i$ W M4 n ~# {" L) C
复制代码二、使用OpenSSL
1 A9 e% n3 p9 A% }* O: h 在VC中配置使用以上的函数库:
/ W* q4 n" _' j7 a 点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。5 w3 S R# S2 v+ V) N
在"Show directories for:"的"Include files"选项中新增目录"C:/openssl/include";"Library files"选择中新增目录"C:/openssl/lib"。1 I" `# C( ^6 O$ i/ a! f* W5 p
然后在需要链接OpenSSL函数库的工程中编译时加入"libeay32.lib"就可以了。
( L( l# @: N3 ^' ]) V7 n% [$ M% o' j |